将时间字符串快速转换为日期

2024-03-14

我使用 firebase 作为后端并存储一串时间,例如晚上 7:00。

我正在尝试将从 Firebase 收到的字符串转换为 NSDate,以便我可以对它进行排序、更改时间等

到目前为止我已经在网上查看并提出了这段代码

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 PM

开始:可选(2000-01-01 17:00:00 +0000)


永远记住这一点:Date / NSDate以 UTC 格式存储时间。如果您的时区不是 UTC,则返回的值print(date)总会有所不同。

您可以通过指定 UTC 时区使其打印出 Firebase 中存储的小时。默认值是用户(即您的)时区:

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "hh:mm a"
dateFormatter.timeZone = TimeZone(secondsFromGMT: 0)

let item = "7:00 PM"
let date = dateFormatter.date(from: item)
print("Start: \(date)") // Start: Optional(2000-01-01 19:00:00 +0000)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将时间字符串快速转换为日期 的相关文章

随机推荐