Swift: дата не может разобрать строку "гггг-мм-д'т'хх: мм: сс" - PullRequest
1 голос
/ 29 марта 2020

В настоящее время я пытаюсь вызвать API, который затем возвращает мне некоторую информацию вместе с датой изменения. После этого я хочу отобразить дату в формате «дд.мм.гггг». Дата, которую я получаю от API, выглядит так: «2020-03-20T19: 30: 00». Поэтому я использовал решение в этом вопросе: Как получить время из YYYY-MM-dd'T'HH: мм: ss.sssZ , чтобы оно выглядело в желаемом формате.

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

Код, который я написал, выглядит следующим образом:

let inputFormatter : DateFormatter = DateFormatter()
inputFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss"
let dateFormatter : DateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd.MM.yyyy"

//date is always nil 
let date = inputFormatter.date(from: content?.DateTime ?? "2020-03-20T19:30:00")

dateLabel.text = dateFormatter.string(from: date ?? Date())

Кто-нибудь знает, почему я всегда получаю нулевое значение и если способ преобразования дат - хорошая / плохая практика?

1 Ответ

1 голос
/ 29 марта 2020

@ Лео Дабус дал очень хорошие очки. Интересно, что я проверил ваш код на игровой площадке, используя строку «2020-03-20T19: 30: 00» и , он отлично работает даже без установки локали. Я думаю, что-то не так с content?.DateTime. Пример кода, который вы, вероятно, должны использовать:

`

let dateFormatter : DateFormatter = DateFormatter()
let locale = Locale(identifier: "en_US_POSIX")

dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss"
dateFormatter.locale = locale

guard let date = dateFormatter.date(from: "2020-03-20T19:30:00") else {
  fatalError("Could not create date")
}
print(date)

`

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