如何防止DateComponents更新时区

时间:2017-11-14 19:29:06

标签: swift date nsdatecomponents

我正在尝试从API端点的日期值中获取日期组件。我需要保留日期值,因为它们已经针对时区进行了调整。不幸的是,我无法控制API如何返回日期值。

当我从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

有人可以帮忙吗?谢谢!

1 个答案:

答案 0 :(得分:1)

您可以指定DateComponents使用的时区。

像这样:

let notifyTime = Calendar.current.dateComponents(in: TimeZone.current, from: sessionTime)