Swift日期转换时间不同

时间:2017-08-29 15:46:43

标签: swift date-formatting

我使用以下函数将字符串转换为日期,以便可以使用DateFormatter将其转换为其他格式:

func changeDate(date1: String) -> String {
    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss"
    let date = dateFormatter.date(from:date1)!

    let dateFormatter2 = DateFormatter()
    dateFormatter2.dateFormat = "MMM-dd-yyyy / HH:mm zzz"
    let finaldate = dateFormatter2.string(from: date)

    return finaldate
}

我想采用一个看似2017-08-29T11:49:19的字符串,并将08/29/2017 07:49 EDT显示为字符串。

1 个答案:

答案 0 :(得分:2)

Date个对象代表绝对时间点。但是,使用Date生成的DateFormatter个对象的字符串表示不代表绝对时间点,因此它们对应于特定时区。如果您使用DateFormatter而未明确设置TimeZone,则默认为用户的当前时区。

如果要将输入字符串用作UTC时间戳,则需要在生成timeZone对象时将DateFormatter的{​​{1}}设置为UTC。您应该将第二个Date的{​​{1}}保留在用户的timeZone上,这是默认值。

DateFormatter