为什么日期格式化程序会崩溃? [英] Why date formatter crashes?
本文介绍了为什么日期格式化程序会崩溃?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我下面的代码工作正常.我不知道为什么它有时会崩溃(主要是在应用程序启动时.大约 100 个中的 1 个).
My below code is working fine. I don't know why it crashes sometimes(Mostly on application launch. 1 case out of ~100).
extension Formatter {
static let enUSPOSIX: DateFormatter = {
let formatter = DateFormatter()
formatter.locale = Locale(identifier: "en_US_POSIX")//
return formatter
}()
}
let dateFormatter = Formatter.enUSPOSIX
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss+hh:mm"
let date = dateFormatter.date(from: "2018-05-13T00:00:00+05:30")
dateFormatter.timeZone = TimeZone(identifier: "UTC")
let calendar = Calendar.current
let dayComponent = calendar.component(.year, from: date!)//crashes here sometime
print(dayComponent)
推荐答案
基本上你的日期格式是错误的.时区 +05:30
是 ZZZZZ
不是 +hh:mm
,请阅读 unicode.org 日期格式模式
Basically your date format is wrong. The time zone +05:30
is ZZZZZ
not +hh:mm
, please read unicode.org Date Format Patterns
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZZZZZ"
对于这个标准的 ISO8601 格式,我更喜欢 ISO8601DateFormatter
For this standard ISO8601 format I'd prefer ISO8601DateFormatter
let dateFormatter = ISO8601DateFormatter()
let date = dateFormatter.date(from: "2018-05-13T00:00:00+05:30")
这篇关于为什么日期格式化程序会崩溃?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文