- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在手机设置中设置时区 GMT+13(法莱、托克劳)。
extension Date {
func formatForDto() -> String {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss ZZ"
return dateFormatter.string(from: self)
}
}
let date = Date(timeIntervalSince1970: 320756400) // which is 1980-03-01 11:00:00 UTC
let result = date.formatForDto()
结果 = "1980-03-01 00:00:00 -1100"
而不是 1980-03-02 00:00:00 +1300
(11: 00 + 13)。
在调试器中,当我检查 dateFormatter.timeZone
内部的内容时,我得到了正确的结果:
(lldb) po dateFormatter.timeZone
▿ Optional<TimeZone>
▿ some : Pacific/Fakaofo (current)
- identifier : "Pacific/Fakaofo"
- kind : "current"
▿ abbreviation : Optional<String>
- some : "GMT+13"
- secondsFromGMT : 46800
- isDaylightSavingTime : false
根据documentation :
DateFormatter.timeZone - If unspecified, the system time zone is used.
我的函数应返回 1980-03-02 00:00:00 +1300
。
更有趣的是,当我手动将 timeZone 设置为:
dateFormatter.timeZone = TimeZone(secondsFromGMT: 13 * 60 * 60)
然后它按预期返回 1980-03-02 00:00:00 +1300
。
那么为什么没有 timeZone
设置它就不能像文档中声称的那样工作并且不考虑系统的时区?是SDK的bug吗?
最佳答案
这个问题很有趣,因为事实证明这是由时区引起的:Fale, Tokeleau
,我假设是GMT+13,但根据Time Zone in Fakaofo, Tokelau 2011 年 12 月 30 日之前的时区为 GMT-11。
这就是为什么我的示例 1980-03-01 11:00:00 UTC
应用了不同的偏移量,这就是它与 TimeZone(secondsFromGMT: 13 * 60 * 60) 一起使用的原因
指定精确的偏移量而不是时区。
因此,如果我用日期检查我的代码:
2012-03-01 11:00:00 UTC
它返回 1980-03-02 00:00:00 +1300
1980-03-01 11:00:00 UTC
它返回 1980-03-01 00:00:00 -1100
关于ios - DateFormatter 使用不正确的时区格式化字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51844309/
我的日期时间格式字符串是:yyyy-MM-dd'T'HH:mm:ss.SSSZ 我正在使用 Joda Time 中的 DateTimeFormatter 以上述格式打印我的日期。 现在,将日期视为 2
这个问题已经有答案了: Getting date from [NSDate date] off by a few hours (3 个回答) 已关闭 5 年前。 我对 Date 进行了扩展,返回格式化
先决条件 在手机设置中设置时区 GMT+13(法莱、托克劳)。 实现 extension Date { func formatForDto() -> String { let
我经常在代码中使用 DateFormatter 并且没有发现任何问题,但后来我决定测试一个类进行大量迭代 - 我注意到一个巨大的内存泄漏。 泄漏的原因是 DateFormatter。 简单代码: va
这个问题已经有答案了: want current date and time in "dd/MM/yyyy HH:mm:ss.SS" format (11 个回答) Change the format
我正在尝试将不带时区值(例如“31.05.2015”)的字符串转换为 NSDate。 我的 DateFormatter 有什么问题?它返回日期 2015-05-31 22:00:00 +0000当我尝
这个问题已经有答案了: NSDateFormatter show wrong year (1 个回答) 已关闭 3 年前。 我尝试格式化我的 UTC 日期,但结果似乎非常错误 日期格式化程序:
这个问题在这里已经有了答案: NSDate Format outputting wrong date (5 个答案) Getting date from [NSDate date] off by
我一直在使用以下代码来格式化日期值: NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; [dateFormat setLoca
这个问题在这里已经有了答案: Getting date from [NSDate date] off by a few hours (3 个答案) 关闭 5 年前。 我对返回格式化字符串的 Date
我从字符串中得出的日期总是 nil,我不知道为什么。 func getBirthdate() -> Date? { let formatter = DateFormatter()
我是 iOS 的新手,我想在我的约会中增加几毫秒,比如 (5)。我使用了下面的代码,但我没有得到我正在使用的确切日期 let str_TimeStamp = "2017-08-09 10:26:30.
我的 DateFormatter 有问题。 我的 iOS 应用程序与服务器通信并使用 If-Modified-Since header 和使用以下格式化程序创建的日期: modifiedSinceDa
首先要提前致谢。我已经使用 iOS/Swift 多年,这是我第一次看到这种奇怪的行为。这是代码: let dateFormatter = DateFormatter() dateFormatter.d
这个问题在这里已经有了答案: NSDateFormatter show wrong year (1 个回答) 关闭 6 年前。 我有以下代码: var components = DateCompon
在我的 Java 应用程序中,我使用 DateFormat 实例来解析日期输入。 DateFormat fmt; fmt = DateFormat.getDateInstance(DateFormat
代码: let isoDate = "1981-02-20T10:44:00+0800" let dateFormatter = DateFormatter() dateFormatter.timeZ
有谁知道 Java 中的 DateFormatter 不是那么挑剔?我的意思是我可以为它提供多种格式的日期,如果我提供它这样的格式: yyyy-MM-dd HH:mm:ss Z 用户可以输入: 201
我已经阅读了多篇关于此的文章,其中大部分是由于未设置特定时区而系统获取了当前时区。我的场景略有不同并给出了意想不到的结果,所以我会尝试详细解释。 我正在处理一个返回日期的后端,该日期分为日期和时间,存
我试图以我设备的语言显示格式化日期,但它一直以英语显示(即使设备设置为葡萄牙语)。 在我的 ViewController 中我创建了一个日期: let todaysDate: Date = Date(
我是一名优秀的程序员,十分优秀!