Представить строку даты как дату UTC и преобразовать ее в местный часовой пояс - PullRequest
0 голосов
/ 07 сентября 2018

Сервер предоставляет мне дату в формате: «2018-09-07 01:00:00». Часовой пояс этой даты - UTC. Теперь я должен преобразовать его в местный часовой пояс. Я использую функцию:

func getLocalDate(dateString: String) -> String {

    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss a"
    dateFormatter.timeZone = TimeZone(abbreviation: "UTC")
    dateFormatter.locale = Locale.current

    let dt = dateFormatter.date(from: dateString)

    dateFormatter.timeZone = TimeZone.current
    dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss aZ"

    return dateFormatter.string(from: dt!)

}

При этом дата сначала конвертируется в UTC, а затем в местный часовой пояс, поэтому я не получаю желаемого результата. Как мне установить часовой пояс этой даты как UTC, без конвертации?

РЕДАКТИРОВАТЬ: Я получаю вывод 2018-09-07 05:45:00 AM + 0545, но ожидаемый вывод 2018-09-07 06:45:00 AM + 0545

1 Ответ

0 голосов
/ 11 сентября 2018

Спецификатор формата для 12-часового времени равен hh, а не HH, что для 24-часового времени.

Объединение HH со спецификатором am / pm a даст неверный результат.

...