为什么日期格式化程序会崩溃? [英] Why date formatter crashes?

查看:83
本文介绍了为什么日期格式化程序会崩溃?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我下面的代码工作正常.我不知道为什么它有时会崩溃(主要是在应用程序启动时.大约 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:30ZZZZZ 不是 +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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆