Я заметил странную ситуацию с DateFormatter на iOS 11.3.Я пытаюсь преобразовать строку в дату, используя следующий код:
let dateString = "2018-05-31 11:45:24Z"
let dateFormat = "yyyy-MM-dd HH:mm:ss'Z'"
var dateFormatter = DateFormatter()
dateFormatter.dateFormat = dateFormat
dateFormatter.timeZone = TimeZone(abbreviation: "UTC")
let date = dateFormatter.date(from: dateString)
Странно то, что на симуляторе это работает, а на моем iPhone - нет (дата равна нулю).Из того, что я заметил, локаль dateFormatter на симуляторе - en_US, а на моем iPhone - en_RO.
Если я явно установил Locale для DateFormatter на en_US, он вернёт правильное значение.
dateFormatter.locale = Locale(identifier: "en-US")
Более того, после того, как я изменил регион моего телефона на Соединенные Штаты, он вернётся правильнои это работает даже после того, как я изменил его обратно в Румынию.Я попытался перезагрузить телефон, но он все еще работает.
Проблема появилась только на iOS 11, без и с изменениями в коде, и из того, что я тестировал, она есть и в Swift, и в Objective-C.
Это вызвало проблему в моем приложении,Я мог бы заставить Locale «en-US» и надеяться, что это решит проблему.
Кто-нибудь еще сталкивался с этим?Есть ли другой способ решить эту проблему?