首页 > 解决方案 > iOS:添加时区而不更改/转换时间值

问题描述

您好需要时区帮助,我需要更改它而不更改时间戳,如下所示:“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 但时间也改变了(

提前致谢。

标签: iosdatensdate

解决方案


鉴于您需要忽略时间戳字符串中提供的时区并将其替换为时区标识符,您可以使用如下代码:

let timezone = "America/Los_Angeles"
let timestamp = "2019-01-25T11:55:00+00:00"

let df = DateFormatter()
df.timeZone = TimeZone(identifier: timezone)
df.dateFormat = "yyyy-MM-dd'T'HH:mm:ss"

let date = df.date(from: String(timestamp.dropLast(6)))

这将使用附加时区设置日期格式化程序,同时解析没有任何时区的时间戳(使用 删除dropLast(6))。

此代码为您提供Date代表 2019 年 1 月 25 日 11:55:00 的洛杉矶时区。请记住,如果您只是打印date,它将以 UTC 显示日期。这只是打印 a 的输出Date

请注意,实际正确的解决方案是从 API 开始获取具有正确时区的时间戳字符串。您不必像这样跳过箍来获得正确的时间戳。


推荐阅读