Swift日期格式化,从服务器返回日期与发送到服务器的日期不同

时间:2016-05-10 17:26:23

标签: ios swift datetime nsdateformatter

我正在尝试解析发送到服务器的日期。

现在从服务器收到的日期为" 2016-05-10T22:34:00.000Z"

这是我的代码,用于从上述日期字符串中获取格式化日期:

 let format="yyyy-MM-dd'T'HH:mm:ss.SSSZ"
    let dateFmt = NSDateFormatter()
    dateFmt.dateFormat = format
    let newreadableDate = dateFmt.dateFromString(dateString)
    print(newreadableDate!)
    dateFmt.dateFormat = "MMM dd hh:mm a"
            print("Formatted date is : \(dateFmt.stringFromDate(newreadableDate!))")

print语句打印出以下结果: 5月11日04:04 AM

上述结果完全错误。我应该回到我从服务器收到但具有不同格式的相同日期。

但newReadableDate变量会输出正确的日期: 2016-05-10 22:34:00 +0000

但在我格式化之后,它给了我错误的约会。

以上代码有什么问题?

1 个答案:

答案 0 :(得分:0)

你的代码很好。输出是正确的。您解析的日期字符串是UTC时间。但是您在当地时间记录最终结果。您必须住在比UTC早5.5小时的时区。

日期字符串中的Z代表UTC时间的“Zulu”时间。因此日期格式化程序将字符串解析为UTC时间的时间。

然后选择打印生成的NSDate。默认情况下,NSDateFormatter会在区域设置时生成NSDate的字符串。

2016年5月10日22:34 UTC时间与您当地(+0530)时区2016年5月11日上午04:04完全相同。