Swift 日期格式,从服务器取回的日期与发送到服务器的日期不同
Swift date formatting, getting the date back from server is not the same as sent to the server
我正在尝试解析发送到服务器的日期。
现在从服务器收到的日期是 "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!))")
打印语句打印以下结果:May 11 04:04 AM
以上结果完全错误。我应该返回从服务器收到的相同日期,但格式不同。
但是 newReadableDate 变量打印出正确的日期:2016-05-10 22:34:00 +0000
但是在我格式化之后,它给了我错误的日期。
上面的代码有什么问题?
你的代码没问题。输出是正确的。您解析的日期字符串采用 UTC 时间。但是你在当地时间记录最终结果。您必须居住在比 UTC 早 5.5 小时的时区。
日期字符串中的Z
表示"Zulu"时间,是UTC时间。因此日期格式化程序将字符串解析为 UTC 时间。
然后您选择打印结果 NSDate
。默认情况下,NSDateFormatter
将在语言环境时间从 NSDate
生成一个字符串。
UTC 时间 22:34 2016 年 5 月 10 日与您当地 (+0530) 时区的 2016 年 5 月 11 日 04:04 时间完全相同。
我正在尝试解析发送到服务器的日期。
现在从服务器收到的日期是 "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!))")
打印语句打印以下结果:May 11 04:04 AM
以上结果完全错误。我应该返回从服务器收到的相同日期,但格式不同。
但是 newReadableDate 变量打印出正确的日期:2016-05-10 22:34:00 +0000
但是在我格式化之后,它给了我错误的日期。
上面的代码有什么问题?
你的代码没问题。输出是正确的。您解析的日期字符串采用 UTC 时间。但是你在当地时间记录最终结果。您必须居住在比 UTC 早 5.5 小时的时区。
日期字符串中的Z
表示"Zulu"时间,是UTC时间。因此日期格式化程序将字符串解析为 UTC 时间。
然后您选择打印结果 NSDate
。默认情况下,NSDateFormatter
将在语言环境时间从 NSDate
生成一个字符串。
UTC 时间 22:34 2016 年 5 月 10 日与您当地 (+0530) 时区的 2016 年 5 月 11 日 04:04 时间完全相同。