字符串在ios Swift中没有正确转换为日期

时间:2017-12-28 05:46:52

标签: ios swift

我想将字符串转换为日期一切正常,但仍然会根据字符串给出错误的日期。

代码:

import UIKit

public class Utils {

    public class func converServerTimeStampToDate (_ timeStamp: String) -> Date {

        let dateFormatter = DateFormatter()
        dateFormatter.dateFormat = "MM/dd/yyyy, hh:mm:ss a"

        return dateFormatter.date(from: timeStamp)!
    }
}


print(Utils.converServerTimeStampToDate("12/06/2017, 06:48:03 am"
))   

----- -----输出

2017-12-06 14:48:03 +0000

2 个答案:

答案 0 :(得分:0)

这是正确的结果。当您将任何字符串转换为Date时,它会将其转换为UTC时区。当您将该日期再次转换为字符串时,它将在您当前的时区中。因此,将该日期转换为字符串,您将获得真实日期。因此,您的Date对象始终位于UTC时区,您的字符串将始终位于您当地的时区。当您在标签或任何其他控件中显示日期时,您肯定会以字符串格式显示,它将在您当地的时区。所以,它没有错。你只需要理解这个概念!

答案 1 :(得分:0)

要解决此问题,请设置时区

dateFormatter.timeZone = TimeZone(abbreviation: "GMT+0:00")

默认情况下,当前时区是输出与输入不同的原因。

相关问题