2017-04-03 35 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)