首页 > 解决方案 > Swift dateFormat 返回错误的时间

问题描述

我想返回来自我的 API 的日期/时间。服务器位于阿姆斯特丹。

迅速:

//load from api
print(date)

let df = DateFormatter()
df.dateFormat = "yyyy-MM-dd HH:mm:ss"
df.timeZone = TimeZone(identifier: "Europe/Amsterdam")
df.locale = Locale(identifier: "en_US")
var updated = dateFormatter.date(from: "\(date)")

//return format
print(updated)

返回:

2020-01-10 00:01:01
Optional(2020-01-09 23:01:01 +0000)

我不知道为什么,但我认为输出正在返回 GMT。输出应该是2020-01-10 00:01:01 +0000因为阿姆斯特丹是GMT+1。

标签: iosswiftxcode

解决方案


正如 vadian 在评论中解释的那样,它正在按预期工作。

但是,如果您想显示本地日期而不是 UTC,您可以在此处使用我的代码段。

如果知道您总是只想要一个给定的时区,只需修改代码以添加正确的秒数。(例如,在阿姆斯特丹时间的情况下,它比 UTC 多 3600 秒。)


推荐阅读