JSON/JavaScript 的日期文字是什么(如果确实存在的话?)
4 回答
日期文字被提出然后撤回,也许我们会在 ECMA-262 规范的未来版本中看到它们。
由于JavaScript 中没有 Date 文字,因此 JSON 也没有文字(如果 JavaScript 引擎无法解析它,JavaScript Object Notation 的名称就不是太好了;-))。诚然,这是不幸的。许多 Web 服务将输出ISO 8601字符串,例如2010-03-23T23:57Z
,但是为了在 JavaScript 中解析它,您需要使用自定义库、创建自定义函数或依赖 ECMAScript 5th 的日期解析规范,该规范指出实现应该解析 ISO 8601原生字符串。
如果要在 JavaScript 中解析的是您自己的 JSON,您可以使用自 1970 年 1 月 1 日 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;
}
显然,您需要使用现代浏览器中的原生 JSON 对象或json2.js来在解析时使用 reviver。
日期文字没有特殊格式。
在 Javascript 中,您可以编写new Date(2010, 2, 23)
(不幸的是,月份是从零开始的)。
取决于序列化程序。
它可能是以下之一:
/日期(1224043200000)/
/日期(1198908717056)/(MS JSON日期)
/日期(1198908717056-1000)/(+/-时区)
new Date("2010-03-24") (据我了解,这是公认的'javascript json')
“2010-03-24”
ETC
对于日期 JSON 的字符串表示使用字符串表示法,例如“2010-03-24 ...”,对于对象表示,它使用对象表示法“{...}”