我见过很多不同的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有规定。
2012-04-23T18:25:43.511Z
这就是原因。
1.它是人类可读的,但也是简洁的
1.它能正确分类
1.它包括小数秒,这可以帮助重新建立时间顺序。
1.它符合ISO 8601的规定。
1.ISO 8601在国际上已经确立了十多年的地位。
1.ISO 8601得到了W3C、RFC3339和XKCD的认可。
也就是说,所有写过的日期库都能理解 "1970年以来的毫秒"。所以为了便于移植,ThiefMaster是正确的。
JSON不知道任何关于日期的事情。.NET所做的是一个非标准的黑客/扩展。
我会使用一种可以在JavaScript中轻松转换为Date
对象的格式,即可以传递给new Date(..)
的格式。最简单也可能是最容易移植的格式是包含自1970年以来的毫秒的时间戳。
没有正确的格式;JSON规范没有指定交换日期的格式,这就是为什么有这么多不同的方法。
最好的格式可以说是用ISO 8601格式表示的日期(见维基百科);它是一个众所周知和广泛使用的格式,可以在许多不同的语言中处理,使它非常适用于互操作性。如果你对生成的json有控制权,例如,你以json格式向其他系统提供数据,选择8601作为日期交换格式是一个不错的选择。
如果你不能控制生成的json,例如,你是来自几个不同的现有系统的json的消费者,最好的处理方法是有一个日期解析的实用函数来处理预期的不同格式。