我的以下代码运行良好。 我不知道为什么它有时会崩溃(主要是在应用程序启动时。大约 100 例中有 1 例)。
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 Date Format Patterns
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZZZZZ"
编辑:
对于这个标准的 ISO8601 格式,我更喜欢 ISO8601DateFormatter
let dateFormatter = ISO8601DateFormatter()
let date = dateFormatter.date(from: "2018-05-13T00:00:00+05:30")
关于ios - 为什么日期格式化程序崩溃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52178316/