DateFormatter выдает неправильную дату

#swift #date #dateformatter

Вопрос:

Я использую средство выбора даты, чтобы изменить дату в своем приложении.

До сих пор это работает нормально, но теперь я пытаюсь отобразить дату, выбранную в данный момент в окне выбора даты DateFormatter . Это код, который у меня не работает:

 let strDate = "02. November 2020"
let formatter = DateFormatter()

formatter.dateformat = "dd. MMMM yyyy"
formatter.locale = Locale(identifier: "de")
formatter.timeZone = TimeZone.current
let date = formatter.date(from: strDate)
// output here is 2020-11-01 23:00:00 UTC
let strTemp = formatter.string(from: date)
// output here is 02. November 2020
 

Как вы можете видеть, выходная строка с «неправильной» даты все еще верна, поэтому я не замечал этого до сих пор.
Проблема сейчас в том, что на DatePicker дисплее отображается 01. Ноябрь 2020 года, а не 02. Ноябрь 2020 года.
Может ли кто-нибудь указать мне правильное направление?

Комментарии:

1. Я думаю, это из-за некоторых проблем с вашим часовым поясом и разницы между utc и cest (для Германии).

2. вы можете установить часовой пояс самостоятельно, как formatter.timeZone = TimeZone(abbreviation: "UTC") это даст вам «2020-11-02 00:00:00 0000»

3. «дата, выбранная в данный момент» , почему это экземпляр строки, а не экземпляр даты?

4. Дата указана правильно. 2020-11-01 23:00:00 UTC и 2020-11-02 00:00:00 0100 находятся в один и тот же момент времени. Учтите, что print даты всегда отображаются в UTC 0000