DateFormatter неправильный вывод времени при выборе другого месяца - PullRequest
0 голосов
/ 26 мая 2020

В моем приложении есть отдельные компоненты DatePicker и TimePicker.

После того, как пользователь выбрал желаемую дату и время, я создаю новый объект Date следующим образом:

let timeStamp = Date(year: selectedDate.year, month: selectedDate.month, day: selectedDate.day, hour: selectedTime.hour, minute: selectedTime.minute)

Затем я использую DateFormatter для вывода точного времени, которое пользователь выбрал так:

let formatter = DateFormatter()
formatter.dateFormat = "HH:mm"
formatter.string(from: timeStamp)

Теперь у меня очень странная ошибка, когда иногда вывод времени будет правильным (время будет отображаться в формате UTC + 2), а иногда и неверным (время будет будет отображаться в формате UTC + 1), и я понятия не имею, что могло быть причиной этого.

Пример 1 (правильный вывод):

User selects: May 26, 2020 - 18:38
Date ISO output: "2020-05-26T16:38:00Z" 
DateFormatter output: "18:38"   

This is the correct output

Пример 2 (неверный вывод):

User selects: March 26, 2020 - 18:38
Date ISO output: "2020-03-26T16:38:00Z"
DateFormatter output: "17:38"       

This is not the correct output. Time should be 18:38 like in the above example.

Кто-нибудь, подскажите, пожалуйста, как это возможно? Буквально единственная разница в том, что пользователь выбирает март вместо мая (другой месяц), и это по какой-то причине сбивает DateFormatter с толку, поэтому вывод времени находится в другом часовом поясе.

Я использую SwiftDate для работы с датами в целом.

Ответы [ 2 ]

0 голосов
/ 26 мая 2020

Установите правильный formatter.locale, вы можете попробовать Locale(identifier: "en_US_POSIX") или попробовать использовать свойство formatter.timeZone. Возможно, TimeZone.current или TimeZone(secondsFromGMT: 0) исправят вашу проблему

0 голосов
/ 26 мая 2020
*
let timezone = TimeZone.current
dateFormatter.timeZone = timezone

Это должно гарантировать, что вы всегда используете тот же часовой пояс, который в настоящее время используется вашим устройством

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...