Итак, основная проблема, с которой вы столкнулись, заключается в том, что yyyy-mm-dd
использует mm
, то есть минуты, а не MM
, то есть месяцы.
Так что, если вместо этого вы попытались что-то вроде ...
let dateAsString = "\(Date())"
let df = DateFormatter()
df.dateFormat = "yyyy-MM-dd HH:mm:ss zzz"
let date = df.date(from: dateAsString)
df.dateFormat = "d MMM yyyy h:mm a"
let time12 = df.string(from: date!)
это приведет к
21 Feb 2020 6:00 PM
Теперь проблема в том, что вы можете просто сделать
let df = DateFormatter()
df.dateFormat = "d MMM yyyy h:mm a"
df.string(from: Date())
и получить то же самое результат.
Помните, что Date
сам по себе не имеет понятия "формат", помимо того, что обеспечивает его вывод "отладки", поэтому вы не можете изменить формат Date
. вместо этого вы используете средство форматирования для «представления» значения Date
в некоторой удобочитаемой форме.