2015-09-25 92 views
0

我試圖將此字符串轉換爲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

回答

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" 
} 
相關問題