2016-09-29 2 views
-1
let date = "2016-05-31T19:00:00+02:00" 

let dateFormatterWithTime: DateFormatter { 
    let df = DateFormatter() 
    df.dateFormat = "yyyy-MM-dd'T'HH:mm:ss Z" 
    return df 
} 
let thisIsNil = dateFormatterWithTime.date(from: date) 

Was ist falsch mit dem Formatierer? Laut http://nsdateformatter.com/ gibt es ein gültiges Datum zurück, aber ich bekomme null von diesemEin String-Datum in Datum einlesen

+3

Ihr Muster hat ein Leerzeichen vor dem UTC-Offset-Spezifizierer. Dein Wert hat diesen Speicherplatz nicht. Das ist vielleicht nicht alles falsch, aber es ist, womit ich anfangen würde. –

+0

können Sie kurz erklären, warum würden Sie diese hinzufügen, da es bereits funktioniert? – Godfather

+2

Es gibt keinen Grund, das Gebietsschema auf 'en_US_POSIX' zu setzen. – rmaddy

Antwort

0

Ihr formatter sollte "" sein. Mark, dass der Z, die für die Zone haben keine Lücke zwischen zweiten und Zone in Ihrem Datum, aber in Ihrem Format gemeint ist, ist es ein Gap

Daher sollte der Code

let date = "2016-05-31T19:00:00+02:00" 

    var dateFormatterWithTime: DateFormatter { 
     let df = DateFormatter() 
     df.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ" 
     return df 
    } 
    let thisIsNil = dateFormatterWithTime.date(from: date) 

    print("date \(thisIsNil)") 

Ausgabeprotokoll sein:

date Optional(2016-05-31 17:00:00 +0000)