Как отформатировать дату, используя часовой пояс в Swift? - PullRequest
0 голосов
/ 05 мая 2018

Я проверил другие вопросы, но ни один из них мне не очень помог.

У меня есть следующая строка:

let dateString = "2018-04-29T21:00:00.000Z"

Я успешно преобразовал его в дату, используя следующее:

let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
let convertedDate = dateFormatter.date(from: dateString)

Но теперь мне нужно только время "чч: мм а" , используя часовой пояс , например "+ 8" . Я пробовал следующий способ, но он не работает:

let dateFormatter = DateFormatter()
dateFormatter.timeZone = TimeZone(abbreviation: "UTC+8")
dateFormatter.dateFormat = "hh:mm a"
let requiredTime = dateFormatter.string(from: convertedDate!)

Может кто-нибудь помочь мне преодолеть эту проблему?

1 Ответ

0 голосов
/ 05 мая 2018

Требуемый формат: hh:mm a Z, что обеспечит +0800.

Вы хотите создать TimeZone, который +8 часов от Гринвичского времени, обычно я предпочитаю использовать соответствующие сокращения (то есть AET), но я думаю, что если у вас его нет, вы можете создать TimeZone используя secondsFromGMT, например ...

let tz = TimeZone(secondsFromGMT: 8 * 60 * 60)
let toFormatter = DateFormatter()
toFormatter.timeZone = tz
toFormatter.dateFormat = "hh:mm a Z"
let requiredTime = toFormatter.string(from: convertedDate!)

Который, основываясь на данных вашего примера, даст значение ...

05:00 AM +0800
...