我想将字符串转换为日期一切正常,但仍然会根据字符串给出错误的日期。
代码:
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
答案 0 :(得分:0)
这是正确的结果。当您将任何字符串转换为Date
时,它会将其转换为UTC
时区。当您将该日期再次转换为字符串时,它将在您当前的时区中。因此,将该日期转换为字符串,您将获得真实日期。因此,您的Date对象始终位于UTC
时区,您的字符串将始终位于您当地的时区。当您在标签或任何其他控件中显示日期时,您肯定会以字符串格式显示,它将在您当地的时区。所以,它没有错。你只需要理解这个概念!
答案 1 :(得分:0)
要解决此问题,请设置时区
dateFormatter.timeZone = TimeZone(abbreviation: "GMT+0:00")
默认情况下,当前时区是输出与输入不同的原因。