2016-04-27 7 views
0

Ich habe eine Zeichenfolge, die ich stringFromDate umgewandelt verwenden und jetzt, ich versuche es wieder aber zu konvertieren, wenn die UIPicker beginnt, ist es mir den falschen TagKonvertieren von String zu NSDate falsches Datum Geben

let dateFormatter = NSDateFormatter() 
dateFormatter.dateFormat = "dd MMM YYYY" 

print(birthday) // logs 15 Jan 1992 

let date = dateFormatter.dateFromString(birthday) 
self.datePicker.setDate(date!, animated: true) 

ich geben versuchte hartcodieren "15 Feb 1992" aber immer noch das gleiche Ergebnis. Das Datum auf UIDatePicker zeigt am 22. Dezember 1991 auf Start.

Wenn ich hardcore verwenden 10 Jan 1980, beginnt es ab dem 23. Dezember 1979

(ich weiß nicht, ob das der Fall ist, aber ich habe MMM dd YYYY in UIPickerView während es dd MMM YYYY für die Saiten ist .. Ich glaube nicht, obwohl, während beim Speichern, speichert es den richtigen Wert) ..

Antwort

1

Sie verwenden das falsche Format. Sie benötigen dd MMM yyyy.

+0

Soll ich dies auch beim Speichern? Weil ich "dd MMM YYYY" benutzte und es am Speichern arbeitet .. Nur zum Lernen .. – senty

+2

Verwenden Sie immer 'yyyy' für das Jahr, es sei denn, Sie haben einen bestimmten und verständlichen Grund, warum Sie' YYYY' verwenden müssen. Sie sind nicht dasselbe. – rmaddy

1

Um ein korrektes Format-String ist sehr wichtig ..

YYYY Woche basiertes Kalenderjahr zu verwenden. (verwendet im ISO-Wochekalender)

yyyy ist gewöhnliches Kalenderjahr.

Also, Sie sollten 'JJJJ' anstelle von 'JJJJ' verwenden.

let dateFormatter = NSDateFormatter() 
dateFormatter.dateFormat = "dd MMM yyyy" 

print(birthday) 

let date = dateFormatter.dateFromString(birthday) 
self.datePicker.setDate(date!, animated: true) 

Für weiteres String-Format für Datum: siehe diesen Link

https://msdn.microsoft.com/en-us/library/az4se3k1(v=vs.110).aspx

+0

Danke, ich habe immer ein komisches Date bekommen. Ie. Ich hatte 10062017 und ich bekam 24-12-2016 alles, weil ich YYYY statt JJJJ hatte. – user3739902