Получение даты из DateFormatter без разделителя (/ или -) возвращает неверную дату: - PullRequest
0 голосов
/ 17 января 2019

Получение даты из DateFormatter без разделителя возвращает неправильную дату,

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

  let dateFormatter = DateFormatter()
  dateFormatter.timeZone = TimeZone.current
  dateFormatter.timeZone = TimeZone(identifier: "UTC")
  dateFormatter.locale = Locale(identifier: "en_US_POSIX")
  dateFormatter.calendar = Calendar(identifier: .iso8601)

  dateFormatter.dateFormat = "ddMMyyyy"
  dateFormatter.date(from: "1112987")

это возвращает "1 ноября 2987 в 8:00 утра", однако должно быть "11 декабря 0987"

Другой пример:

  let dateFormatter = DateFormatter()
  dateFormatter.dateFormat = "MMddyyyy"
  dateFormatter.date(from: "1131987") // "Jan 13, 1987 at 12:00 AM"

Это должно вернуть ноль, поскольку 31 ноября является недействительной датой

Пожалуйста, предложите любое решение

1 Ответ

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

Вы должны обновить формат даты с ddMMyyyy до MMddyyyy.

Ваш код: - dateFormatter.dateFormat = "ddMMyyyy"

Новый код: - dateFormatter.dateFormat = "MMddyyyy"

Кроме того, вы должны установить год из 4 цифр вместо 3 цифр.

Ваш код: - dateFormatter.date(from: "1112987")

Новый код: - dateFormatter.date(from: "11120987"

Если у вас возникнут какие-либо вопросы, оставьте свой ответ.

...