Преобразовать из строки в дату с 12-часовым форматированием - PullRequest
0 голосов
/ 30 октября 2018

Со вчерашнего дня я пытаюсь решить эту проблему, но я сдаюсь. Теперь у меня есть строковая дата "2018-10-30 01:00 PM", и когда я пытаюсь преобразовать ее в дату, формат времени изменится на 24 часа. Я имею в виду, что это будет похоже на "2018-10-30 13:00:00 UTC".

Вот мой код:

let dateFormatter5 = DateFormatter()
dateFormatter5.dateFormat = "yyyy-MM-dd hh:mm a"
dateFormatter5.locale = Locale(identifier: "en_US_POSIX")

dateFormatter5.timeZone = NSTimeZone(abbreviation: "GMT+0:00")! as TimeZone

let now = dateFormatter5.date(from: "2018-10-30 01:00 pm")!

Мне нужно преобразовать эту строку в том же формате времени (12 часов). Есть идеи?

1 Ответ

0 голосов
/ 30 октября 2018

Если исходная строка даты - часовой пояс UTC:

let dateStr = "2018-10-30 01:00 PM"
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd hh:mm a"
dateFormatter.timeZone = TimeZone(secondsFromGMT: 0)
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
if let now = dateFormatter.date(from: dateStr) {
    dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss 'UTC'"
    dateFormatter.string(from: now)  // "2018-10-30 13:00:00 UTC"
}
...