我正在尝试从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
有人可以帮忙吗?谢谢!
答案 0 :(得分:1)
您可以指定DateComponents使用的时区。
像这样:
let notifyTime = Calendar.current.dateComponents(in: TimeZone.current, from: sessionTime)