DateFormatter возвращает ноль на iPhone, но не на симуляторе - PullRequest
0 голосов
/ 31 мая 2018

Я заметил странную ситуацию с 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» и надеяться, что это решит проблему.

Кто-нибудь еще сталкивался с этим?Есть ли другой способ решить эту проблему?

1 Ответ

0 голосов
/ 11 января 2019

У меня была такая же проблема.Опробовал почти все возможные решения, которые я мог найти здесь, но это все равно не сработало.Так что каким-то чудом я увидел комментарий, в котором при преобразовании строки в дату было указано , строка должна точно соответствовать описанию форматера ", и я изменил формат средства форматирования даты на датуСтрока и это сработало.надеюсь, это поможет.

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