JavaScript – “正确”的JSON日期格式

我已经看到JSON日期格式有很多不同的标准:

"\"\\/Date(1335205592410)\\/\""         .NET JavaScriptSerializer
"\"\\/Date(1335205592410-0500)\\/\""    .NET DataContractJsonSerializer
"2012-04-23T18:25:43.511Z"              JavaScript built-in JSON object
"2012-04-21T18:25:43-05:00"             ISO 8601

哪一个是正确的?还是最好?这有什么标准吗?


JSON本身并没有指定如何表示日期,但是JavaScript可以。

应该使用由发出的格式DatetoJSON方法:

2012-04-23T18:25:43.511Z

原因如下:

  1. 它是人类可读的,但也简洁
  2. 它排序正确
  3. 它包括小数秒,可以帮助重建年表
  4. 它符合ISO 8601
  5. ISO 8601在国际上已有十多年的历史
  6. ISO 8601获得W3CRFC3339XKCD的认可

这就是说,每个编写的日期库可以理解“1970年以来的毫秒”。所以为了便于携带,ThiefMaster是正确的。


JSON不知道有关日期的任何信息。.NET所做的是一种非标准的破解/扩展。

我将使用一种可以轻松转换为DateJavaScript中的对象的格式,即可以传递给它的一种格式new Date(...)。最简单也是最便携的格式是自1970年以来包含毫秒的时间戳。


没有正确的格式 ; 的JSON规范不以交换日期这就是为什么有这么多不同的方式来做到这一点指定的格式。

最好的格式可以用ISO 8601格式表示参见维基百科); 它是一种众所周知且广泛使用的格式,可以跨多种不同语言进行处理,因此非常适合于互操作性。例如,如果您可以控制生成的json,则可以将数据以json格式提供给其他系统,选择8601作为日期交换格式是个不错的选择。

例如,如果您无法控制生成的json,则您是来自多个不同现有系统的json的消费者,处理此问题的最佳方法是使用日期解析实用程序函数来处理预期的不同格式。

添加评论

友情链接:蝴蝶教程