В моем приложении есть отдельные компоненты 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 для работы с датами в целом.