Как вы отображаете дату в этом формате? "18 июля 2018 года в 10:02"

let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "UTC")
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
let date = dateFormatter.date(from: "2018-07-18T17:02:02.614Z")

напечатано описание даты: 2015-06-18 17:02:02 +0000 Playground, естественно, выводит это на правой стороне: "18 июня 2015 в 10:02 AM"

Как мне отформатировать это, чтобы отобразить это? "18 июля 2018 года в 10:02"

Спасибо!

1 ответ

Решение

Вам нужно отформатировать date (который сейчас Date экземпляр) с использованием другого DateFormatter, И вы должны использовать стили даты и времени, а не фиксированный формат для этого.

И "UTC" - это не локаль, это часовой пояс. Но тебе это не нужно. Но вы должны использовать специальный язык en_US_POSIX при разборе строки даты фиксированного формата.

let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
let date = dateFormatter.date(from: "2018-07-18T17:02:02.614Z")
if let date = date {
    let outputFormatter = DateFormatter()
    outputFormatter.dateStyle = .medium
    outputFormatter.timeStyle = .short
    let output = outputFormatter.string(from: date)
    print(output)
}

Выход:

18 июля 2018 года в 11:02

Обратите внимание, что время будет зависеть от вашего местного часового пояса. По умолчанию вывод будет осуществляться по местному времени, поэтому не ожидайте, что вывод будет 17:02 так как это время в часовом поясе UTC.

Другие вопросы по тегам