【问题标题】:DateFormatter is returning nil date for a simple date string [duplicate]DateFormatter 为简单的日期字符串返回 nil 日期 [重复]
【发布时间】: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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    请对日期字符串使用正确的格式,如下所示:

    formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ"
    

    而不是:

    formatter.dateFormat = "yyyy"
    

    具有特定格式的每个日期字符串,如下代码:

    let testDate = "2021"
        formatter.dateFormat = "yyyy"
    

    let testDate = "2021-05-01T01:00:00Z"
    formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ"
    

    更多详情请查看此链接:https://stackoverflow.com/a/52297497/5140621

    【讨论】:

    • 当输入字符串为“2021”时,“yyyy-MM-dd'T'HH:mm:ssZ”格式如何正确?
    • 您可以从“2021”创建日期,然后从新日期再次创建日期字符串,使用任何格式从新日期字符串创建:let date = formatter.date(from: testDate) formatter.dateFormat = "yyyy- MM-dd'T'HH:mm:ssZ" let newDateString = formatter.string(from: date!) let newDate = formatter.date(from: newDateString)
    • 我想你对这个问题有点误解
    • 我认为您误解了这个问题 - 虽然知道完整日期字符串的正确格式是有帮助的,但我还没有让格式化程序仅使用我正在努力的年份正确生成日期.
    猜你喜欢
    • 1970-01-01
    • 2019-03-13
    • 2021-03-07
    • 1970-01-01
    • 1970-01-01
    • 2019-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多