格式化日期时的好奇行为

时间:2017-04-03 06:07:34

标签: ios swift date nsdateformatter

我从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

当我把它变成日期时,我的Playground输出是正确的:

let date = dateForm.date(from: dateString)

=>输出:" 2016年12月31日,上午12:10"

但是如果我尝试打印这个完全相同的对象(日期),我会得到以下输出:

print(date!)

=>输出:" 2016-12-30 23:10:00 +0000 \ n"

我的问题是:我怎样才能确定我处理正确的日期(我的意思是指当地时区(GMT + 01))?

1 个答案:

答案 0 :(得分: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)