2016-08-20 2 views
0

Ich bin zu wandeln einen String (Datum) versucht aus einem RSS-Feed ("pubDate") zu einem NSDate Objekt in Swift 2.Swift 2: Analysiert RSS pubDate zu NSDate Objekt

let dateString:String = "Tue, 16 Aug 2016 15:27:33 +0000" 

let dateFormatter = NSDateFormatter() 
dateFormatter.dateStyle = NSDateFormatterStyle.ShortStyle 
dateFormatter.dateFormat = "yyyy-MM-dd" 

let date = dateFormatter.dateFromString(dateString) 
print(date) 

Das Problem ist, dass in diesem Fall das Datum Objekt ist immer Null. Das Problem ist das Format der Eingabezeichenfolge. Wenn ich dateString zu "2016-08-16" ändere, dann wird das NSDate-Objekt korrekt erstellt.

Also ich habe keine Ahnung, wie dieses NSDate funktioniert. String-Operationen auf der DateString vor? Oder einige Optionen auf dem DateFormatter?

Danke für Ihre Hilfe im Voraus!

+1

angeben sollten Ihr Datumsformat entspricht "2016-08-16". Sie benötigen das richtige Datumsformat – vadian

+0

Mögliches Duplikat von [Konvertierung von NSString in NSDate (und wieder zurück)] (http://stackoverflow.com/questions/3917250/converting-nsstring-to-nsdate-and-back-again) – vadian

+0

Adapt Dein dateFormat zu deinem dateString, indem du folgendes folgst: http://i.stack.imgur.com/lkYVY.png – Moritz

Antwort

2

Während Fragen über das Konvertieren von Zeichenfolge zu Datum hauptsächlich über das Angeben der richtigen Formatzeichenfolge lautet, sollten Sie lesen, was Apple über NSDateFormatter and Internet Dates zu sagen hat. Die kurze Version ist, dass Sie immer die lokale als en_US_POSIX:

let dateString = "Tue, 16 Aug 2016 15:27:33 +0000" 

let dateFormatter = NSDateFormatter() 
dateFormatter.locale = NSLocale(localeIdentifier: "en_US_POSIX") 
dateFormatter.dateFormat = "E, d MMM yyyy HH:mm:ss Z" 

let date = dateFormatter.dateFromString(dateString) 
print(date)