首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用DateFormatter表示的当前日期

用DateFormatter表示的当前日期
EN

Stack Overflow用户
提问于 2020-05-02 18:32:29
回答 1查看 335关注 0票数 1

我在GMT时区中从当前日期到日期的解析日期有问题。

代码语言:javascript
复制
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
    }
}

当我打印这段代码时,我得到了一个正确的日期,但是是字符串

代码语言:javascript
复制
dateFormatter.string(from: self)

当我尝试将其转换回日期时,如下所示:

代码语言:javascript
复制
dateFormatter.date(from: dateFormatter.string(from: self))

我得到了一个约会但是在UTC..。

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

编辑:

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

发布于 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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61557886

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档