将日期字符串表示为UTC日期并将其转换为本地时区

时间:2018-09-07 10:41:33

标签: ios swift date timezone

后端为我提供格式为“ 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 < / p>

1 个答案:

答案 0 :(得分:0)

12小时制的格式说明符为hh,而不是24小时制的HH

HH与am / pm指定符a结合使用将产生错误的结果。