【发布时间】:2017-02-19 21:40:07
【问题描述】:
我使用 firebase 作为后端并存储一串时间,例如下午 7:00。
我正在尝试转换从 Firebase 接收的字符串并将其转换为 NSDate,以便我可以对其进行排序,更改时间..etc
到目前为止,我已经在网上查看并想出了这段代码
dateFormatter.dateFormat = "hh:mm a"
dateFormatter.locale = NSLocale.current
dateFormatter.timeZone = NSTimeZone.local
let date = dateFormatter.date(from: item)
self.times.append(date!)
print("Start: \(date)")
其中 item 是字符串 (7:00 PM)
当我运行应用程序时,控制台返回:
项目:上午 9:00
开始:可选(2000-01-01 05:00:00 +0000)
我已经设置了时区、语言环境、格式。为什么返回的时间不正确?
打印出其他一些示例:
项目:下午 1:20
开始:可选(2000-01-01 17:20:00 +0000)
项目:上午 9:40
开始:可选(2000-01-01 05:40:00 +0000)
项目:上午 10:00
开始:可选(2000-01-01 05:00:00 +0000)
项目:下午 12:00
开始:可选(2000-01-01 17:00:00 +0000)
【问题讨论】:
-
首先,上午/下午 12 小时的格式是“hh”,而不是“HH”
-
这实际上是一个错误,我确实有它作为 hh:mm a (编辑帖子)
-
你的时区是什么?
-
我猜你和 GMT+0 相差 5 小时?对?这解释了小时问题。对于年/月/日,这是因为您的字符串不包含任何有关它的信息,因此将其作为参考 2000。
-
是的,我是。那我该如何解决呢?无论如何都要让它在上午 9:00 显示?