Swift DateFormatter возвращает неправильную дату - PullRequest
0 голосов
/ 03 мая 2018

У меня проблема с получением правильной даты в следующем случае

let dateString = "May 2, 2018 at 3:31 PM"
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "MMM dd, yyyy 'at' HH:mm a"
dateFormatter.timeZone = TimeZone(identifier: "UTC")
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
let date = dateFormatter.date(from: dateString)!

Я получаю "2 мая 2018 года в 8:31 утра" в качестве даты, что неверно

Когда одна и та же дата используется с другой строкой форматирования даты, я получаю правильную дату

let dateFormatter3 = DateFormatter()
dateFormatter3.dateFormat = "yyyy-MM-dd'T'HH:mm:ss"
dateFormatter3.locale = Locale(identifier: "en_US_POSIX")
dateFormatter3.timeZone = TimeZone(identifier: "UTC")
let date3 = dateFormatter3.date(from: "2018-05-02T15:31:00")!

Возвращенная дата: «2 мая 2018 в 11:31», что является правильным.

Мне нравится знать, что я делаю неправильно в первом блоке кода? Или это ошибка в классе форматирования даты?

Ответы [ 2 ]

0 голосов
/ 03 мая 2018

Я надеюсь, что это сработает для вас:

    let dateString = "May 2, 2018 at 3:31 PM"
    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "MMM dd, yyyy 'at' hh:mm a"
    dateFormatter.timeZone = TimeZone(identifier: "UTC")
    dateFormatter.locale = Locale(identifier: "en_US_POSIX")
    let date = dateFormatter.date(from: dateString)
    print(date!)

Выход: -

enter image description here

0 голосов
/ 03 мая 2018

, когда час в часах / часах (1 ~ 12), используйте чч, в час в день (0 ~ 23), используйте чч.

Это помогает мне форматировать даты: enter image description here

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