Ваша основная проблема заключается в том, что формат "yyyy-MM-dd'T'HH:mm:ssZ"
не соответствует строке, такой как "2018-01-01T00:00:00.000+03:00"
. Эта строка содержит миллисекунды, а ваш формат - нет.
Обновите свой формат до "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
.
Это исправит результат nil
.
Тогда вам следует очистить использование NSTimeZone
. Просто используйте TimeZone
.
dateFormatter.timeZone = TimeZone(secondsFromGMT: 0)
Но нет необходимости устанавливать часовой пояс при разборе этой строки, потому что строка содержит информацию о часовом поясе.
Однако вы можете или не хотите устанавливать часовой пояс при преобразовании результирующего Date
в новый String
. Это зависит от того, какой результат вы хотите.
Вам нужна последняя строка в формате UTC (что вы получите с вашим текущим кодом) или конечная строка в местном времени пользователя?
Если вам нужна последняя строка по местному времени пользователя, не устанавливайте свойство часового пояса вообще. По умолчанию используется местное время.