2014-06-22 30 views
5

Gặp sự cố khi sử dụng NSDateFormatter trong Swift, ai đó có thể trợ giúp không? Dưới đây mã không có gì.Gặp sự cố khi sử dụng NSDateFormatter (stringFromDate) trong Swift

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

đọc [Chuỗi Interpolation] (https://developer.apple.com/library/prerelease/ios/documentation/swift/conceptual/swift_programming_language/StringsAndCharacters.html) tham khảo – Mohsen

Trả lời

6

Bạn có chắc chắn đặt kiểu ngày không? Nếu không, nó sẽ xuất ra một chuỗi rỗng.

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

Chỉ vậy, kiểu mặc định là đủ để in một cái gì đó ... –

19

Bạn đặt chế độ dateFormat (hoặc dateStyle).

Dưới đây là một ví dụ hoàn chỉnh để phân tích nó nhằm giúp bạn dễ dàng thấy những gì bạn đang bỏ lỡ.

Dòng cụ thể mà bạn muốn chú ý là nơi bạn cần đặt dateFormat của dateFormatter. Ở đây, chúng tôi sẽ đặt nó thành "yyyy-MM-dd" sẽ cung cấp kết quả như "2014-06-22".

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

Sau đó, bạn có thể gọi formatADate().

Khám phá NSDateFormatter reference để biết thêm thông tin.

+0

cảm ơn câu trả lời của bạn. Tôi chỉ muốn chia sẻ nhanh 'Gotcha': thuộc tính timeStyle được tính là một dateStyle. Tôi đã có một NSFormatter() và thiết lập timeStyle = .NoStyle và sau đó đã đi để thiết lập dateFormat, và đã bối rối lúc đầu tiên là tại sao tôi đã nhận được một chuỗi rỗng. Sau khi xem ví dụ của bạn, tôi đã biết rằng dateFormat WAS sẽ tính thời gian cũng như/và thiết lập timeStyle là không cần thiết, và thực tế là gây ra vấn đề của tôi. Không đặt cả hai timeFormat và một dateStyle –

+0

Lưu ý: dateFormatter có thể là một hằng số, tức là cho phép thay vì var. –

4

Nếu bạn đang sử dụng UIDatePicker:

@IBAction func whenDateChanged(sender: UIDatePicker) { 

    var dateFormatter = NSDateFormatter() 

    dateFormatter.dateFormat = "MM-dd-yyyy" 

    let strDate = dateFormatter.stringFromDate(datePicker.date) 

    self.dateLabel.text = strDate 

} 
Các vấn đề liên quan