首页 > 解决方案 > 将日期字符串表示为 UTC 日期并将其转换为本地时区

问题描述

后端为我提供格式为“2018-09-07 01:00:00 am”的日期。该日期的时区是 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

标签: iosswiftdatetimezone

解决方案


12 小时制的格式说明符是hh,而不是HH24 小时制的。

HH与 am/pm 说明符结合a会产生不正确的结果。


推荐阅读