【问题标题】:DateFormatter with AM/PM returns nil [duplicate]带有 AM/PM 的 DateFormatter 返回 nil [重复]
【发布时间】:2020-04-10 04:26:29
【问题描述】:

我知道这个话题在这里和其他论坛上都有充分的讨论。 不幸的是,我仍然无法理解为什么 Date 为 nil。

请注意,当我在调试器或 Playground 中运行代码时,它完全可以正常工作。 这与它在设备上运行的事实有关。

   var dateString = "2019-12-17 3:48:02 PM"
   let dateFormatter = DateFormatter()
   dateFormatter.locale = Locale.current
   dateFormatter.timeZone = TimeZone.current
   dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss a"
   let date = dateFormatter.date(from: dateString) // date is nil

【问题讨论】:

  • 12 小时格式是 hh,而不是 HH。另见stackoverflow.com/q/40692378/1187415
  • 尝试将区域设置设置为您知道支持 AM/PM 的内容,例如“en_US_POSIX”或“en_GB”等
  • 感谢大家的回复,@MartinR 我实际上用 HH 和 hh 都试过了,但是没有用。由于我使用的是 12 小时制,因此我还是将其设置为 hh。

标签: ios swift nsdateformatter dateformatter


【解决方案1】:

将 en_US 添加为您的区域设置,如下所示:

dateFormatter.locale =  NSLocale(localeIdentifier: "en_US")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-03
    • 1970-01-01
    • 1970-01-01
    • 2021-05-05
    • 2015-07-28
    • 1970-01-01
    相关资源
    最近更新 更多