2014-06-22 17 views
5

Masz problemy z używaniem NSDateFormatter w Swift, czy ktoś może pomóc? Poniższy kod niczego nie drukuje.Masz problemy z używaniem NSDateFormatter (stringFromDate) w Swift

var dateFormatter = NSDateFormatter() 
println(dateFormatter.stringFromDate(NSDate())) 
+0

Przeczytaj [String interpolacja] (https://developer.apple.com/library/prerelease/ios/documentation/swift/conceptual/swift_programming_language/StringsAndCharacters.html) referencja – Mohsen

Odpowiedz

6

Czy ustawiłeś styl daty? Jeśli tego nie zrobisz, wyświetli pusty ciąg.

var dateFormatter = NSDateFormatter() 
dateFormatter.dateStyle = .FullStyle 
println(dateFormatter.stringFromDate(NSDate())) 
+0

Po prostu, domyślny styl powinien wystarczyć do wydrukowania czegoś ... –

19

Ustawić dateFormat (lub dateStyle).

Oto pełny przykład, który przerywa go, aby łatwiej było zobaczyć, czego brakuje.

Określona linia, na którą chcesz zwrócić uwagę, to taka, w której musisz ustawić dateFormat dateFormatter. Tutaj ustawiamy wartość "yyyy-MM-dd", co daje wynik podobny do "2014-06-22".

func formatADate() { 
    var dateFormatter = NSDateFormatter() 
    dateFormatter.dateFormat = "yyyy-MM-dd" 
    let d = NSDate() 
    let s = dateFormatter.stringFromDate(d) 
    println(s) 
} 

Następnie można wywołać formatADate().

Aby uzyskać więcej informacji, sprawdź numer NSDateFormatter reference.

+0

dzięki za odpowiedź. Chciałem tylko udostępnić szybkie "Gotcha": właściwość timeStyle liczy się jako dateStyle. Miałem NSFormatter() i ustawiłem timeStyle = .NoStyle, a następnie poszedłem ustawić dateFormat i na początku zastanawiałem się, dlaczego otrzymuję pusty ciąg znaków. Po obejrzeniu przykładu stwierdziłem, że ustawienie dateFormat WAS uwzględniało czas, który również powinien wyglądać i że ustawienie timeStyle na żadne nie było konieczne, a nawet powodowało mój problem. Nie należy ustawiać wartości zarówno timeFormat, jak i dateStyle –

+0

Uwaga: dateFormatter może być stałą, tzn. Raczej niż var. –

4

Jeśli używasz UIDatePicker:

@IBAction func whenDateChanged(sender: UIDatePicker) { 

    var dateFormatter = NSDateFormatter() 

    dateFormatter.dateFormat = "MM-dd-yyyy" 

    let strDate = dateFormatter.stringFromDate(datePicker.date) 

    self.dateLabel.text = strDate 

} 
Powiązane problemy