2016-03-23 35 views
0

我正在使用NSDate並將其變爲dateString。但後來...來自日期的字符串工作,來自字符串的日期不起作用

當我嘗試採取相同的dateString並將其變回NSDate我的日期不正確。

的NSDate到dateString ...

let dateFormatter = NSDateFormatter() 
dateFormatter.dateFormat = "MMM d, yyyy H:mm a" 
let dateString = dateFormatter.stringFromDate(timeDate as! NSDate) 
print("Date: \(dateString)") 

控制檯:

Date: Mar 22, 2016 22:30 PM 
Date: Mar 23, 2016 1:00 AM 
Date: Mar 23, 2016 9:00 AM 

dateStringplainDate ...

let reverseDateFormatter = NSDateFormatter() 
reverseDateFormatter.dateFormat = "MMM d, yyyy H:mm a" 
let plainDate = reverseDateFormatter.dateFromString(dateString) 
print("Date Reverse: \(plainDate)") 

控制檯:

Date Reverse: Optional(2016-03-22 17:30:00 +0000) 
Date Reverse: Optional(2016-03-23 05:00:00 +0000) 
Date Reverse: Optional(2016-03-23 05:00:00 +0000) 
+1

22:30沒有意義 –

+0

你需要決定在24「H:mm」之間或12小時「h:mm a」格式 –

+0

@LeoDabus 22:30 pm僅僅因爲「pm」部分而沒有意義? – victorpulak

回答

2

當你的日期轉換爲字符串,你失去了時區信息,然後將其無法拼湊回來一起。

是否有某些原因,您不能將日期本身作爲NSDate存儲,然後使用該日期而不是從字符串重新生成日期?

如果你需要將其轉換回從字符串完整的日期,你將需要調整您的格式來存儲時區以及

+0

所以這個過程是:從CloudKit中獲取日期和時間,這是24小時格式。然後,我將該日期轉換爲iPhone的字符串以顯示爲文本(使用用戶手機時區,因此我沒有在CloudKit的末尾對硬件日期+時間進行硬編碼)。然後我需要將字符串日期傳遞給Watch,這樣我就可以使用它顯示爲一個字符串並對時間線條目進行排序。 – victorpulak

+0

所以,當我開始遇到問題的時候,就在手錶方面。所以當我追蹤這個問題時,我想讓我在iPhone上試試這一切,看看當我將字符串轉換回NSDate時是否也存在問題。 – victorpulak

+0

我希望能夠幫助並使其更清楚,讓我知道您的想法,如果您對我應該更改的內容或其他方面有什麼建議。謝謝! – victorpulak

1

stringFromDate返回一個非可選的字符串,但dateFromString返回一個可選的日期。它打印出來之前有條件解開結果:

如果讓結果= reverseDateFormatter.dateFromString(dateString){ 打印(結果) }

+0

真棒好信息!讓我知道,如果你對我的主要問題有任何想法,那就是直到不同日期的日期。 – victorpulak

+0

Bolnad已經回答了這個 - 通過NSDate到Watch,而不是String。 – Darko

+0

Ps:或通過時區信息以及 – Darko