DateFormatter 为简单的日期字符串返回 nil 日期

Jam*_*son 1 xcode date ios swift dateformatter

我遇到一个问题,尝试通过 DateFromatter 将字符串转换为日期时只产生了“nil”,而且我不知道哪里出错了。代码非常简单:

    let testDate = "2021"

    let formatter = DateFormatter()
    formatter.locale = Locale(identifier: "en_US_POSIX")
    formatter.dateFormat = "yyyy"

    formatter.timeZone = TimeZone(secondsFromGMT: 0)


    let date = formatter.date(from: testDate)
Run Code Online (Sandbox Code Playgroud)

请注意,这比原来简单得多,我尝试格式化的日期实际上是:

"2021-05-01T01:00:00Z"
Run Code Online (Sandbox Code Playgroud)

但我已经将其剥离以缩小问题所在。

正如您从上面看到的,我已经精简到一年,使用 en_US_POSIX 配置 DateFormatter 并仅使用“yyyy”作为格式。这在 Playgrounds 中有效,但在我的 Xcode 模拟器(位于美国区域设置)或我自己的物理 iPhone(设置为英国区域设置)中不起作用。话虽这么说,我不知道为什么区域设置很重要,因为有问题的字符串只是一年 - 它甚至没有得到错误的年份,只是零。

我不确定我哪里错了。

Leo*_*bus 5

正如您在这篇文章中看到的那样,Xcode 调试器有一个错误,即使解析日期成功,它也会将可选日期显示为 nil。如果您打印可选日期,您将看到结果日期。