我在GMT时区中从当前日期到日期的解析日期有问题。
extension Date {
func getLocalizedDay() -> Date {
let dateFormatter = DateFormatter()
var calendar = Calendar.current
calendar.timeZone = NSTimeZone(name: "GMT")! as TimeZone
dateFormatter.calendar = calendar
dateFormatter.locale = Locale.current
dateFormatter.timeZone = TimeZone(identifier: "GMT")
dateFormatter.dateFormat = "yyy-MM-dd HH:mm:ss"
guard let otpDate = dateFormatter.date(from: dateFormatter.string(from: self)) else { return Date() }
return otpDate
}
}当我打印这段代码时,我得到了一个正确的日期,但是是字符串
dateFormatter.string(from: self)当我尝试将其转换回日期时,如下所示:
dateFormatter.date(from: dateFormatter.string(from: self))我得到了一个约会但是在UTC..。
有人知道如何解决这个问题吗?
编辑:
var dateFromatter = DateFormatter()
var calendar = Calendar.current
calendar.timeZone = NSTimeZone(name: "GMT")! as TimeZone
dateFromatter.calendar = calendar
dateFromatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
let now = Date()
let dateInString = dateFromatter.string(from: now)
print(dateInString) // 2020-05-02 13:11:01
print(dateFromatter.date(from: dateInString)!) // 2020-05-02 11:11:01 +0000发布于 2020-05-02 19:02:26
我知道的公式是,当你得到一个Date对象时,它总是UTC/GMT格式。
当你使用日期格式化程序,日期->字符串,字符串你会得到相关的时区设置。
当您转换字符串->日期时,无论您设置什么时区,日期wu将始终以协调世界时/格林尼治标准时间为单位。
/1现在是在UTC ->中转换为UTC日期字符串的日期。打印(dateFromatter.string(发自:现在)) // 2020-05-02 12:53:43
/2您正在将UTC日期字符串转换为日期,该日期将以UTC打印(dateFromatter.date(from: dateFromatter.string(from: now)!)!) // 2020-05-02 10:53:43 +0000
https://stackoverflow.com/questions/61557886
复制相似问题