2016-10-05 3 views
1

Ich habe folgendes Datumsformat analysieren:Swift derzeit keine Zeichenfolge Datum Date-Objekt

2016-08-26T05:16:50.200Z 

Und ich versuche zu analysieren, ähnlich Datum formatiert Strings in Date Objekte in Swift 3.0.

Hier ist meine Mühe:

let formatter = DateFormatter() 
formatter.dateFormat = "yyyy-mm-dd EEEEE HH:mm:ss Z" 
formatter.locale = Locale(identifier: "us") 

var date = formatter.date(from: date_str)! 

Wo date_str des Formats oben erwähnt ist. Leider erkennt swift das Format nicht und gibt nil zurück.

Hinweis: Ich möchte die Zeichenfolge nicht an den Formatierer anpassen, sondern den Formatierer an das Format der Zeichenfolge anpassen. String ist von externer Quelle, daher habe ich nicht die Möglichkeit, das Format der Zeichenfolge zu ändern, sondern dabei zu bleiben und einen Formatierer zu erstellen, der das Datumsmuster der Zeichenfolge erkennt.

Irgendwelche Ideen, wo mein Format falsch ist?

+0

Vielleicht dumme Frage, aber haben Sie versucht, Leerzeichen zu entfernen, damit die Zeichenfolge genau Format entspricht? "JJJJ-MM-TT EEEEE HH: mm: SS Z" -> "JJJJ-MM-TTEEEEEEHH: mm: SSZ" – ZassX

+0

@ZassX Danke. Ich denke, ich habe es versucht, aber nicht das Z am Ende. Lass es mich versuchen. – John

+0

@ZassX Nein, das hat nicht funktioniert. Um ehrlich zu sein, als ich die Dokumentation über die möglichen Werte des Formatierers las, war Z nicht verfügbar und ich weiß auch nicht, was das an einem realen Datum bedeutet. – John

Antwort

3

Sie machen hier einen Fehler, hier T ist nicht für Week Detail, die T ist nur ein Marker für wo der Zeit Teil beginnt.

Ein einzelner Zeitpunkt kann durch Verketten eines vollständigen Datumsausdrucks, des Buchstabens T als Trennzeichen und eines gültigen Zeitausdrucks dargestellt werden. Zum Beispiel "2016-10-05T14: 30".

So, jetzt nur Ihre dateFomat zu yyyy-MM-dd'T'HH:mm:ss.SSSZ ändern und Sie werden Sie richtige Datum wollen bekommen.

let formatter = DateFormatter() 
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ" 
formatter.locale = Locale(identifier: "us") 
var date = formatter.date(from: date_str)! 
print(date) 

Ausgang:

enter image description here

+0

Vielen Dank! Das Format missverstanden! – John

+0

Willkommen Kumpel :) –

Verwandte Themen