2016-03-02 55 views
2

我有斯威夫特NSDateFormatter一個奇怪的問題,具有一定的日期,斯威夫特的NSDate格式化問題

這裏是我的代碼:

let stringDate = "25/03/2015" 

let dateFormatter = NSDateFormatter() 

dateFormatter.dateFormat = "dd/MM/yyyy" 

let date = dateFormatter.dateFromString(stringDate) 

此代碼工作正常,我能得到來自字符串的日期。但是,如果我將日期更改爲「25/03/2016」或「31/03/2017」,我總是會收到nil

這很奇怪,有沒有人也有這個問題?任何人都知道可能是這個奇怪的錯誤背後的原因?

+1

適用於我 - 您的問題的來源可能在您的代碼中的其他地方。你在什麼時區? – Moritz

+1

您是否在夏令時在那些特定日期的午夜時間更改的區域設置和時區?那麼這可能是原因,因爲0:00 - 0:59可能不存在。 – vadian

+0

@vadian我改變了時區,它現在正在工作,奇怪的是,我正在夏令時但不是在這些日子裏的時區,請將您的評論置於答案中,以便我可以接受。 – Firas

回答

2

您是否處於夏令時在那些特定日期的午夜時間更改的區域設置和時區?

然後這可能是原因,因爲0:00 - 0:59可能不存在。

-1

我只是嘗試這樣做:

let dateFormatter = NSDateFormatter() 
dateFormatter.dateFormat = "dd/MM/yyyy" 

let date = dateFormatter.dateFromString("25/03/2015") 
NSLog("%@", date!); 

let date1 = dateFormatter.dateFromString("25/03/2016") 
NSLog("%@", date1!); 

let date2 = dateFormatter.dateFromString("31/03/2017") 
NSLog("%@", date2!); 

而且我的輸出是這樣的:

2016-03-02 11:31:53.117 SwiftTest[5139:2280171] 2015-03-24 23:00:00 +0000 
2016-03-02 11:31:53.117 SwiftTest[5139:2280171] 2016-03-24 23:00:00 +0000 
2016-03-02 11:31:53.118 SwiftTest[5139:2280171] 2017-03-30 22:00:00 +0000 

因此,似乎別的東西是錯在你的應用程序。

+0

我正在測試一個新項目的「遊樂場」上的代碼,而且我總是遇到同樣的問題,可能會發生什麼? – Firas