2015-03-06 1 views
5

Ok. Dieser hat mich perplex. Ich versuche, eine Datumszeichenkette von einem Knopf zu ziehen und Format ist als ein Datum, das in CoreData gespeichert werden soll.Schnelle Datumsformatierung

Hier ist mein Code:

let dateStr = setDateBTN.titleLabel?.text 
let dateFormatter = NSDateFormatter() 
dateFormatter.dateFormat = "MM-dd-YYYY" 
let date:NSDate = dateFormatter.dateFromString(dateStr!)! 

Wenn ich ein println auf dateStr bekomme ich folgendes: 2015.03.10 Dann, wenn ich, dass ich am Tag sofort println erhalten: 2014.12.21 05 : 00: 00 +0000

Irgendwelche Ideen, warum das tatsächliche Datum sich ändert, wenn ich es durch den Datumsformatierer führe?

Vielen Dank im Voraus,
bnjmnmyers

+2

Lookup die Dokumentation: Das Format für die Jahre ist "yyyy" mit Klein y. (Und du bist nicht der erste, der diesen Fehler macht :) –

+0

Danke, Martin. Ich hatte es ursprünglich als Kleinbuchstaben und etwas anderes funktionierte nicht, so dass ich nur in einem Griff nach Hilfe es in Großbuchstaben änderte. –

+0

Ich habe gerade eine Bibliothek veröffentlicht, die bei der Arbeit mit NSDate in Swift helfen kann; hoffe, es hilft: https://github.com/malcommac/SwiftDate – danielemm

Antwort

8

NSDateFormatter Klasse Referenz: http://goo.gl/7fp9gl

Datum Formatierungsanleitung (Apple): http://goo.gl/8zRTQl

Ein häufiger Fehler ist YYYY zu verwenden. yyyy gibt das Kalenderjahr an, während YYYY das Jahr (der "Woche des Jahres") angibt, das im Kalender der ISO-Jahreswoche verwendet wird.

sollte Ihr Code arbeiten, wie Sie es erwarten, wie folgt aus:

let dateStr = setDateBTN.titleLabel?.text 
let dateFormatter = NSDateFormatter() 
dateFormatter.dateFormat = "MM-dd-yyyy" 
let date:NSDate = dateFormatter.dateFromString(dateStr!)! 
+0

sei dir bewusst, dass in modernen iOS pro Apple müssen Sie dies tun: https://Stackoverflow.com/a/42370648/294884 (was ist einfacher zum Glück!) – Fattie