如何防止 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)