JSON文本(RFC 4627)具有对象,数组,字符串,数字,布尔值(字面意思true
或false
)的明确表示null
.但是,它没有定义用于表示时间信息,如日期和时间,这在应用程序中非常常见.考虑到RFC 4627中规定的约束和语法,目前使用哪种方法来表示JSON中的时间?
对受访者的注意:这个问题的目的是记录已知流通的各种方法以及实例和相对的利弊(理想情况来自现场经验).
我在使用中看到的唯一表示(虽然,不可否认,我的经验仅限于DOJO)是ISO 8601,它运作良好,并且代表了您可能想到的任何事物.
例如,您可以访问上面的链接.
优点:
几乎代表你可以抛出的任何东西,包括时间跨度.(即3天,2小时)
缺点:
嗯......实际上我不知道.除了可能需要一些习惯吗?如果没有内置函数来解析它,那么解析它当然很容易.
ISO 8601似乎是一个自然的选择,但是如果你想用在浏览器中运行的JavaScript解析它,你将需要使用一个库,因为浏览器支持Date
可以解析ISO 8601日期的JavaScript 对象的部分是不一致的,即使在相对较新的浏览器中.ISO 8601的另一个问题是它是一个大型,丰富的标准,并且日期/时间库仅支持其中的一部分,因此您必须选择要使用的库的ISO 8601子集.
相反,我将时间表示为自1970-01-01T00:00Z以来的毫秒数.Date
在很多旧版浏览器中,对象的构造函数可以理解这一点,至少可以回到IE7(这是我测试过的最早的版本).