Swift Calendar.current.nextDate timeZone выдает - PullRequest
0 голосов
/ 09 февраля 2019

Я пытаюсь получить объект Date для следующего наступающего будущего времени, где время по UTC равно 18. Однако мой код не работает должным образом.У меня есть следующее:

let dateComponents = DateComponents(timeZone: TimeZone(abbreviation: "GMT"), hour: 18)
let date = Calendar.current.nextDate(after: Date(), matching: dateComponents, matchingPolicy: .nextTime)

print(date)

Проблема в том, что это приводит к 2019-02-09 23:00:00 +0000

Дата для следующего наступающего времени, когда час равен 18 в EST.

Я бы ожидал, поскольку в dateComponents для часового пояса установлено UTC, а для часа - 18, дата будет 2019-02-09 18:00:00 +0000.Кроме того, изменение часового пояса, похоже, не влияет на найденный nextDate.

Почему функция nextDate не учитывает часовой пояс, установленный в dateComponents, переданном ей?

1 Ответ

0 голосов
/ 09 февраля 2019

Я живу во время по Гринвичу, и бег на игровой площадке дает ожидаемый результат, который вы ищете.Вы устанавливаете часовой пояс вашего компонента даты, но я думаю, что ваш собственный календарь (Calendar.current) установлен в EST.Вам нужно будет учесть смещение в EST против GMT для требуемого результата

...