Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/97.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使用DateFormatter以GMT表示的当前日期_Ios_Swift_Date_Dateformatter - Fatal编程技术网

Ios 使用DateFormatter以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

我在分析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

有人知道如何解决这个问题吗

编辑:


我知道的公式是,当你得到一个日期对象时,它总是以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
对象代表一个时间点,一个瞬间。它不存储任何时区信息。@是否需要editSo
2020-05-02 12:53:43
中的清扫器?如果是这样的话,这是对
Date
类的一个典型误解,可能在某个地方有一个重复…谢谢你的回答,但它并没有解决我的问题。我需要在午夜重新加载数据,但这段时间我是在凌晨2点重新加载数据。您能展示一些示例输入和输出吗?请记住,
Date
对象代表一个时间点,一个瞬间。它不存储任何时区信息。@是否需要editSo
2020-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