ios - 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 但时间也改变了(
提前致谢。
解决方案
鉴于您需要忽略时间戳字符串中提供的时区并将其替换为时区标识符,您可以使用如下代码:
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 开始获取具有正确时区的时间戳字符串。您不必像这样跳过箍来获得正确的时间戳。
推荐阅读
- flutter - Flutter - 如何更改收音机背景颜色
- flutter - 使用 onWillPop 时后退按钮被禁用,并且它发生在应用程序的第一个版本中
- windows - 如何更改 Chromium 浏览器徽标和名称?
- lua - 如何减少 AwesomeWM 中的动画持续时间?
- angular - 如何从 BehaviourSubject 读取数据并将新数据发送到其中
- java - 请任何人参考我如何检查哈希图中的布尔值是否大于用户定义的整数
- angular - 如何防止手风琴组件关闭?
- python - 将元素列表解压缩到熊猫数据框中
- python - 从数组转换回来时如何保留PNG图像的颜色
- angular - 如何在角度材料中实现 Sidenav、页眉和页脚?