2015-12-16 60 views
2

這裏是我的代碼我的DateFormatting有什麼問題?

let fmt = NSDateFormatter() 
fmt.dateFormat = "yy/MM/dd (EEE)" 

這裏是我的數據(selectedNotifications)

2015-12-16 10:26:31 +0000 

當我格式化這個樣子,

cell.receivedDate.text = "From XXX on " + fmt.stringFromDate(selectedNotificaitons.createdAt) 

這表明我這樣

From XXX on 58/12/16 (Wed) 

我有什麼問題?爲什麼年份是58而不是15

+3

你是如何檢查'selectedNotificaitons.createdAt'的值的?也許它實際上是一個較早的日期解析失敗?如果你使用'yyyy'而不是'yy'格式,會發生什麼? (順便說一下,這是一個奇怪的格式 - 通常是年份第一格式是ISO yyyy-MM-dd格式。) –

+0

當我使用「yyyy/MM/dd(EE)」 - > 2558/12/16(Wed ) –

+2

顯然,'selectedNotificaitons.createdAt'的價值不是你想象的。直接得到它的時間間隔並檢查它的值。 –

回答

1

嘗試將區域設置爲en_US_POSIX告訴斯威夫特使用公曆。

fmt.locale = NSLocale(localeIdentifier: "en_US_POSIX") 
1

您上面發佈的代碼是正確的。我試圖在操場上,它導致正確的輸出

所以錯誤在於你的selectedNotificaitons.createdAt。打印createdAt財產,並檢查它

enter image description here

+0

格式化之前,它就像那樣 - > 2015-12-16 10:26:31 +0000。格式化後 - > 2558/12/16(星期三)。我不知道whats wrong.createdDate是用於存儲在Realm數據庫的NSDate。 –

+0

@ 6245Htarwara它的字符串,您需要先將其轉換爲日期,然後將其轉換爲所需格式的字符串。 –