日期字面值were proposed and then retracted;也许我们会在未来版本的ECMA-262规范中看到它们。 从there is no Date literal in JavaScript开始,JSON也没有文字(如果JavaScript引擎不能解析,JavaScript对象表示法就不是一个好名字;- )).诚然,这是不幸的.许多Web服务将输出一个ISO 8601字符串,例如2010-03-23T23:57Z,但为了在JavaScript中解析它,您需要使用一个自定义库,创建一个自定义函数或依赖于ECMAScript 5th的Date解析规范,该规范规定实现应该原生地解析ISO 8601字符串. 如果要用JavaScript解析的是您自己的JSON,您可以使用类似毫秒since 1970 January 1st 00:00这样简单的标识符,然后将reviver函数传递给JSON.parse:
var myJSON = '{"MyDate":"@1269388885866@"}'
var myObj = JSON.parse(myJSON, function (key, value)
{
// Edit: don't forget to check the type == string!
if (typeof value == "string" && value.slice(0, 1) == "@" && value.slice(-1) == "@")
return new Date(+value.substring(1, -1));
else
return value;
}
4条答案
按热度按时间pxq42qpu1#
日期字面值were proposed and then retracted;也许我们会在未来版本的ECMA-262规范中看到它们。
从there is no Date literal in JavaScript开始,JSON也没有文字(如果JavaScript引擎不能解析,JavaScript对象表示法就不是一个好名字;- )).诚然,这是不幸的.许多Web服务将输出一个ISO 8601字符串,例如
2010-03-23T23:57Z
,但为了在JavaScript中解析它,您需要使用一个自定义库,创建一个自定义函数或依赖于ECMAScript 5th的Date解析规范,该规范规定实现应该原生地解析ISO 8601字符串.如果要用JavaScript解析的是您自己的JSON,您可以使用类似毫秒since 1970 January 1st 00:00这样简单的标识符,然后将reviver函数传递给
JSON.parse
:显然,您需要使用现代浏览器中的原生JSON对象或json2.js来在解析时使用Reviver。
llycmphe2#
日期文字没有特殊格式。
在Javascript中,您可以编写
new Date(2010, 2, 23)
(不幸的是,月份是从零开始的)。dgsult0t3#
取决于序列化程序。
它可以是以下之一:
/日期(1224043200000)/
/日期(1198908717056)/(MS JSON日期)
/日期(1198908717056-1000)/(+/-时区)
新日期(“2010-03-24”)(据我所知,这是公认的“javascript json”)
“2010年3月24日”
等等
laik7k3q4#
对于日期的字符串表示,JSON使用字符串表示法,例如“2010-03-24...",对于对象表示法,它使用对象表示法“{...}”