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

时间:2015-09-25 20:53:56

标签: ios string swift date nsdate

我试图将此字符串转换为NSDate, 它适用于USA Location,但是当我改为巴西时。 Bumm,它崩溃了! 我应该使用哪种格式字符串?

这是我的代码:

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 个答案:

答案 0 :(得分:0)

您忽略了字符串的时区信息。这样,您将时间作为实际为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"
}