20

JSON/JavaScript 的日期文字是什么(如果确实存在的话?)

4

4 回答 4

21

日期文字被提出然后撤回,也许我们会在 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。

于 2010-03-24T00:06:55.467 回答
11

日期文字没有特殊格式。

在 Javascript 中,您可以编写new Date(2010, 2, 23)(不幸的是,月份是从零开始的)。

于 2010-03-23T22:28:31.647 回答
5

取决于序列化程序。

它可能是以下之一:

/日期(1224043200000)/

/日期(1198908717056)/(MS JSON日期)

/日期(1198908717056-1000)/(+/-时区)

new Date("2010-03-24") (据我了解,这是公认的'javascript json')

“2010-03-24”

ETC

于 2010-03-23T22:32:31.497 回答
0

对于日期 JSON 的字符串表示使用字符串表示法,例如“2010-03-24 ...”,对于对象表示,它使用对象表示法“{...}”

于 2010-03-23T22:25:08.833 回答