2015-03-06 9 views
5

Ok. Ten mnie zakłopotał. Próbuję pobrać ciąg daty z przycisku, a format jest datą do zapisania w CoreData.Formatowanie Swift Data

Oto mój kod:

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

Jeśli robię println na dateStr uzyskać następujące: 10.03.2015 Następnie gdybym natychmiast println na bieżąco otrzymuję: 21.12.2014 05 : 00: 00 +0000

Jakieś pomysły, dlaczego faktyczna data zmienia się po uruchomieniu przez formatator daty?

Dzięki z góry,
bnjmnmyers

+2

Lookup dokumentacja: Format lat jest "rrrr" z małymi y. (I nie jesteś pierwszy tutaj, aby popełnić ten błąd :) –

+0

Dzięki, Martin. Pierwotnie miałem to małe i coś innego nie działało, więc po prostu chciałem zmienić pomoc na wielką. –

+0

Właśnie wydałem bibliotekę, która może pomóc w pracy z NSDate w Swift; mam nadzieję, że to pomaga: https://github.com/malcommac/SwiftDate – danielemm

Odpowiedz

8

NSDateFormatter Class Reference: http://goo.gl/7fp9gl

Data formatowanie Guide (Apple): http://goo.gl/8zRTQl

Częstym błędem jest użycie rrrr. yyyy określa rok kalendarzowy, natomiast RRRR określa rok ("Tydzień roku"), używany w kalendarzu rocznym ISO.

Twój kod powinien działać, jak można się spodziewać, jak to:

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

należy pamiętać, że we współczesnym iOS na Apple należy to zrobić: https://stackoverflow.com/a/42370648/294884 (co jest łatwiejsze na szczęście!) – Fattie