将服务器日期转换为Z格式到本地nsdate

时间:2016-08-28 19:15:19

标签: ios swift nsdate

我需要将此服务器日期(来自kinvey请求)转换为本地时区。

我使用以下代码:

let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-ddTHH:mm:ss.sTZD"
print(dateFormatter.dateFromString(newValue))

日期格式为:

  

ect =" 2016-08-28T16:30:06.553Z"要么           lmt =" 2016-08-28T16:30:06.553Z"

当我打印日期为零时,你知道我做错了什么吗?我认为它可能是dateFormat的结尾

1 个答案:

答案 0 :(得分:3)

如果您的应用只能定位到iOS7 +,则可以使用以下所述的格式符号:

Fixed Formats (in Data Formatting Guide)

Unicode技术标准#35 version tr35-31

  

第二个| S | 1..n | 3456 |分数秒 - 截断(像其他   时间字段)到字母数。 (示例显示使用显示   模式SSSS秒值12.34567)

     

区域| X | 1 | -08,+ 0530,Z |该   带有小时字段和可选分钟字段的ISO8601基本格式。该   ISO8601 UTC指标" Z"当本地时间偏移为0时使用   与x相同,加上" Z"。)

因此,要解析小数秒,请使用大写' S'

和' X'适用于时区,包括" Z"作为UTC。

试试这个:

dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSX"

(我逃脱了' T'因为它可能在将来用作另一个时间格式符号。)

PS。虽然我找不到描述解释" Z"的日期格式的线程。作为UTC + 0000,如果满足某些条件,忽略或删除它可能不是一个糟糕的解决方案。请找到最佳解决方案。