将此日期字符串转换为NSDate“2016-09-23T23:06:00 + 00:00”

问题描述:

我试图将此字符串转换为NSDate, 它适用于美国位置,但是当我更改为巴西时。 Bumm,它崩溃了! 这是我应该使用的格式字符串?将此日期字符串转换为NSDate“2016-09-23T23:06:00 + 00:00”

这是我的代码:

static func textToDatedateString: String) -> NSDate { 
    let dateFormatter = NSDateFormatter() 
    dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss+00:00" 
    let date = dateFormatter.dateFromString(dateString)! 

    return date 
} 
+1

提供有关崩溃的详细信息。 – rmaddy

+0

它返回nil,并且崩溃为“unnable不包含nil值” – user3658007

+1

将日期格式化程序的区域设置设置为'en_US_POSIX'。 – rmaddy

你忽略你的字符串时区信息。这样您输入的时间就是本地时间,实际上是UTC +00:00。如果你输入一个无效的字符串日期,你也迫使解开你的字符串,它会崩溃你的应用程序。像这样尝试:

func textToDate(dateString: String) -> NSDate? { 
    let dateFormatter = NSDateFormatter() 
    dateFormatter.calendar = NSCalendar(calendarIdentifier: NSCalendarIdentifierISO8601)! 
    dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssxxx" 
    dateFormatter.locale = NSLocale(localeIdentifier: "en_US_POSIX") 
    return dateFormatter.dateFromString(dateString) 
} 

if let dateFromString = textToDate("2016-09-23T23:06:00+00:00") { 
    print(dateFromString) // "2016-09-23 23:06:00 +0000" 
}