【发布时间】:2019-06-19 22:01:21
【问题描述】:
您好,需要时区方面的帮助,我需要在不更改时间戳的情况下更改它,如下所示: “2019-01-25T11:55:00+00:00”->“2019-01-25T11:55:00-08:00”
这是我得到的: “2019-01-25T11:55:00+00:00”时间戳,00:00 不正确,我需要将其更改为特定时区,例如 -08:00 以获取“2019-01-25T11: 55:00-08:00"
我正在使用具有以下日期格式的 dateFormatter:“yyyy-MM-dd'T'HH:mm:ssZ” 尝试通过 dateComponents 解耦整个时间戳并在添加 tz 之后再次重建它,但时间也发生了变化(
提前致谢。
【问题讨论】:
-
您是否可能误解了它的工作原理?
"2019-01-25T11:55:00+00:00"之类的时间戳特别表示它发生在 UTC 时区的 11:55:00。 -08:00 时区的同一时刻是 3:55:00,而不是 11:50:00。为什么要更改时区但保持相同的时间?这似乎是错误的。 -
我得到 timestamp: "2019-01-25T11:55:00+00:00" 和 timeZone 分别为 "America/Los_Angeles",所以这个 11:55 已经在那个时区了,我只是需要将时间戳中的 +00:00 替换为正确的
-
您将时区标识符作为一个字符串与明确说明它位于 UTC 时区的时间戳分开,这真的很奇怪。因此,您的目标是忽略时间戳中指定的时区,并使用单独提供给您的其他时区,对吗?
-
@rmaddy,如果我不得不猜测,我会说它就像一个写得很糟糕的 JSON API,我必须使用一次,其中 API 返回的时间戳没有服务器本地时间的时区,并且然后在解析时,接收方将缺少时区解析为 UTC,现在他试图告诉 Swift 实际上时区不是 UTC,而是 America/Los_Angeles。
-
@Kirill 如果我在最后一个陈述中完全正确,我会说尽你最大的努力让你的 API 被更改以返回带有明确指示时区的 UTC 时间戳。