2017-04-03 33 views
1

我得到一個日期的字符串表示從一個JSON看起來像以下:好奇的行爲而格式化日期

let dateString = "2016-12-31T00:10:00+01:00" 

爲了其建模爲Date對象我使用的日期格式像這樣:

let dateForm = DateFormatter() 
dateForm.locale = Locale(identifier: "fr_FR") 
dateForm.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZZZZZ" 
dateForm.timeZone = TimeZone.current 

當我把它變成一個日期,我的遊樂場輸出是正確的:

let date = dateForm.date(from: dateString) 

=> 0本安輸出: 「2016年12月31日,凌晨00:10」

但是,如果我嘗試打印此完全相同的對象(日期)我得到以下輸出:

print(date!) 

=>輸出:「2016- 12-30 23時10分00秒+0000 \ n」個

我的問題是:我怎麼能確保我處理正確的日期(用正確的我與我的本地時區的意思是(GMT + 01) )?

+0

你得到你的時間都改變了,因爲你的字符串的日期是'UTC + 1的正確日期:00'。 –

回答

0

當你打印日期輸出2016-12-30 23:10:00 +0000和你GMT是+00:00 但是當你從最新得到的字符串時,它會返回字符串,按您指定的格式和你Locale(fr_FR時)輸出2016-12-31T00:10:00+01:00和你GMT是+01:00 如果你想從字符串日期,那麼

日期輸出=您的字符串的日期 - (你GMT)

在你的情況

2016-12-30 23:10:00 = 2016-12-31 00:10:00 - (+01:00)