Как предотвратить обновление DateComponents для часового пояса

Я пытаюсь получить компоненты даты из значения даты из конечной точки API. Мне нужно сохранить значения даты, поскольку они уже скорректированы для часового пояса. К сожалению, я не могу контролировать, как API возвращает значение даты.

Когда я получаю значение даты (sessionTime) из API, оно возвращается следующим образом:

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 

Я в шести часах от GMT, поэтому очевидно, что происходит, но я хотел бы предотвратить это и извлечь компоненты даты точно так, как они есть. Желаемый результат:

year: 2017 month: 12 day: 5 hour: 8 minute: 0 second: 0 isLeapMonth: false

Кто-нибудь может помочь? Спасибо!


person Pheepster    schedule 14.11.2017    source источник


Ответы (1)


Вы можете указать часовой пояс, который использует DateComponents.

Как это:

let notifyTime = Calendar.current.dateComponents(in: TimeZone.current, from: sessionTime)
person 85Camaro    schedule 14.11.2017