【发布时间】:2021-05-05 16:33:25
【问题描述】:
我遇到了一个问题,即尝试通过 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)
请注意,这比原来简单得多,我尝试格式化的日期实际上是:
"2021-05-01T01:00:00Z"
但我已将其直接剥离以缩小问题所在。
正如您从上面看到的,我已经精简到一年,使用 en_US_POSIX 配置 DateFormatter 并仅使用 'yyyy' 作为格式。这适用于 Playgrounds,但不适用于我的 Xcode 模拟器(位于美国地区)或我自己的物理 iPhone(设置为英国地区)。话虽如此,我不知道为什么语言环境会很重要,因为有问题的字符串只是一年——它甚至没有得到错误的年份,只是零。
我不确定我哪里出错了。
【问题讨论】:
-
不工作,很遗憾。我也试过 .gregorian 没有效果。
-
确保您没有传递可选字符串并使用它进行字符串插值。还打印您的结果日期。它可能看起来为零,但这不是因为错误。
-
谢谢 Leo,我刚刚打印出来并出现了 - 我被调试器表示为 nil 感到困惑,并认为发生了一些奇怪的事情。如果您发布答案,我会投票并将其标记为解决方案
标签: ios swift xcode date dateformatter