带有AM / PM的DateFormatter返回nil

时间:2019-12-17 16:12:08

标签: ios swift nsdateformatter dateformatter

我知道此主题已在此处和其他论坛中进行了充分讨论。 不幸的是,我仍然不明白为什么日期为零。

请注意,当我在调试器或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

2 个答案:

答案 0 :(得分:0)

将en_US添加为您的语言环境,如下所示:

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

答案 1 :(得分:-1)

好的,这是胡说八道。 代码没有问题(如果您忽略HH / hh,请参见注释)。

问题出在xCode调试器中,而不是显示它显示为'nil'的date对象的值。 当我将其打印到控制台时,即使调试器显示“ nil”,我也能达到预期的效果。

我猜测它无法以某种方式解析Date对象。 更改线程并解开可选变量无济于事,调试器始终显示'nil'。

谢谢苹果。