Ios 使用DateFormatter以GMT表示的当前日期
我在分析GMT时区中从当前日期到日期的日期时遇到问题Ios 使用DateFormatter以GMT表示的当前日期,ios,swift,date,dateformatter,Ios,Swift,Date,Dateformatter,我在分析GMT时区中从当前日期到日期的日期时遇到问题 extension Date { func getLocalizedDay() -> Date { let dateFormatter = DateFormatter() var calendar = Calendar.current calendar.timeZone = NSTimeZone(name: "GMT")! as TimeZone dateFormatter
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
有人知道如何解决这个问题吗
编辑:
我知道的公式是,当你得到一个日期对象时,它总是以UTC/GMT为单位 当你使用日期格式化程序时,日期->字符串,你将得到的是你设置的相关时区 当您转换字符串->日期时,无论您设置的时区是什么,日期都将始终以UTC/GMT格式输入 ///1现在是UTC->转换为UTC日期strng right中的日期。 打印(dateFromatter.string(from:now))//2020-05-02 12:53:43 ///2您正在将UTC日期字符串转换为日期,该日期将以UTC为单位 打印(dateFromatter.date(from:dateFromatter.string(from:now))!//2020-05-02 10:53:43+0000
我知道的公式是,当你得到一个日期对象时,它总是以UTC/GMT为单位 当你使用日期格式化程序时,日期->字符串,你将得到的是你设置的相关时区 当您转换字符串->日期时,无论您设置的时区是什么,日期都将始终以UTC/GMT格式输入 ///1现在是UTC->转换为UTC日期strng right中的日期。 打印(dateFromatter.string(from:now))//2020-05-02 12:53:43 ///2您正在将UTC日期字符串转换为日期,该日期将以UTC为单位 打印(dateFromatter.date(from:dateFromatter.string(from:now))!//2020-05-02 10:53:43+0000
谢谢你的回答,但这并没有解决我的问题。我需要在午夜重新加载数据,但这段时间我是在凌晨2点重新加载数据。您能展示一些示例输入和输出吗?请记住,
Date
对象代表一个时间点,一个瞬间。它不存储任何时区信息。@是否需要editSo2020-05-02 12:53:43
中的清扫器?如果是这样的话,这是对Date
类的一个典型误解,可能在某个地方有一个重复…谢谢你的回答,但它并没有解决我的问题。我需要在午夜重新加载数据,但这段时间我是在凌晨2点重新加载数据。您能展示一些示例输入和输出吗?请记住,Date
对象代表一个时间点,一个瞬间。它不存储任何时区信息。@是否需要editSo2020-05-02 12:53:43
中的清扫器?如果是这样的话,这是对Date
类的一个典型误解,并且可能在某个地方存在重复…有没有办法将字符串日期转换为ty Date()的正确日期?有没有办法将字符串日期转换为ty Date()的正确日期?
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