2016-05-26 4 views
0

Ich empfange Daten als String wie diese:NSDate von String ist immer null

"2016-05-20T12: 25: 00.0"

Ich möchte seine erhalten entsprechende NSDate Objekt, und ich versuche, auf diese Weise:

let dateFormatter = NSDateFormatter() 
dateFormatter.dateFormat = "YYYY-MM-DDThh:mm:ss.s" 
let date = dateFormatter.dateFromString(dateStr) 

wo dateStr wie das Beispiel, das ich zuerst geschrieben. Ich nahm die dateFormat Zeichenfolge von this page, aber ich bekomme ein nil Datum, was ist falsch dort?

Vielen Dank im Voraus

+0

bestätigen, dass Ihr dateStr Format und Ihre Setter-Format ist richtig oder nicht –

+0

Wie in Apples [Datenformatierungshandbuch] (https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/DataFormatting/DataFormatting.html) dokumentiert, verwendet NSDateFormatter die UTC-Datumsformatmuster: http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns. Dein Datumsformat ist einfach falsch. –

+0

müssen Sie Anführungszeichen für T setzen, wie "YYYY-MM-DD'T'hh: mm: ss.s – raki

Antwort

4

Sie haben ein paar Probleme mit Ihrem Datumsformat. Erste Y ist für weekOfYear, ist für den Tag des Jahres. hh wird 12 Stunden-Format verwendet, dezimal zweite Sie S Kapital verwenden sollten, und Sie müssen die 'T'

Sie tun wie folgt entkommen sollte:

let dateString = "2016-05-20T12:25:00.0" 

let dateFormatter = NSDateFormatter() 
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.S" 
if let date = dateFormatter.dateFromString(dateString) { 
    print(dateFormatter.stringFromDate(date)) // "2016-05-20T12:25:00.0\n" 
} 
0
let dateFormatter = NSDateFormatter() 
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.S" 
if let date = dateFormatter.stringFromDate(NSDate()) { 
    print(dateFormatter.stringFromDate(date)) 
}