如何防止 DateComponents 更新时区
How to prevent DateComponents from updating for time zone
我正在尝试从 API 端点的日期值中获取日期组件。我需要保留日期值,因为它们已经针对时区进行了调整。不幸的是,我无法控制 API returns 日期值。
当我从 API 中获取日期值 (sessionTime
) 时,返回如下:
2017-12-05 08:00:00 +0000
我需要根据该时间设置本地通知,但是,当我尝试使用以下代码从该日期对象中提取组件时:
let notifyTime = Calendar.current.dateComponents(
[.year, .month, .day, .hour, .minute, .second], from: sessionTime)
我明白了:
year: 2017 month: 12 day: 5 hour: 2 minute: 0 second: 0 isLeapMonth: false
我距格林威治标准时间还有六个小时,所以很明显发生了什么,但我希望我能阻止它并完全按照原样提取日期组件。所需的输出将是:
year: 2017 month: 12 day: 5 hour: 8 minute: 0 second: 0 isLeapMonth: false
有人可以帮忙吗?谢谢!
您可以指定 DateComponents 使用的时区。
像这样:
let notifyTime = Calendar.current.dateComponents(in: TimeZone.current, from: sessionTime)
我正在尝试从 API 端点的日期值中获取日期组件。我需要保留日期值,因为它们已经针对时区进行了调整。不幸的是,我无法控制 API returns 日期值。
当我从 API 中获取日期值 (sessionTime
) 时,返回如下:
2017-12-05 08:00:00 +0000
我需要根据该时间设置本地通知,但是,当我尝试使用以下代码从该日期对象中提取组件时:
let notifyTime = Calendar.current.dateComponents(
[.year, .month, .day, .hour, .minute, .second], from: sessionTime)
我明白了:
year: 2017 month: 12 day: 5 hour: 2 minute: 0 second: 0 isLeapMonth: false
我距格林威治标准时间还有六个小时,所以很明显发生了什么,但我希望我能阻止它并完全按照原样提取日期组件。所需的输出将是:
year: 2017 month: 12 day: 5 hour: 8 minute: 0 second: 0 isLeapMonth: false
有人可以帮忙吗?谢谢!
您可以指定 DateComponents 使用的时区。
像这样:
let notifyTime = Calendar.current.dateComponents(in: TimeZone.current, from: sessionTime)