ios - 为什么日期格式化程序崩溃?

标签 ios swift nsdate nsdateformatter

我的以下代码运行良好。 我不知道为什么它有时会崩溃(主要是在应用程序启动时。大约 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:30ZZZZZ不是+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/

相关文章:

iOS - 表格 View 渲染

ios - Segue 无法在带有 TableView 和导航 Controller 的选项卡式应用程序中工作

ios - 哪个是显示链接,UITextView/UILabel中的热词的最佳解决方案?

ios - 允许使用 WKWebView 自签名证书

iphone - 对 NSArray 中的对象进行排序

swift - spritekit 快速碰撞检测不起作用

swift - 合并或展平后台节点以提高游戏性能?

iphone - NSDateFormatter - 设置日期格式

iphone - 如何按天对 NSDate 对象进行分组?

objective-c - 如何使用 NSDate 从今天的日期中查找工作日?