javascript/json日期文字

Osc*_*Ryz 17 javascript json date literals

什么是JSON/JavaScript的日期文字(如果存在这样的东西?)

And*_*y E 19

提出日期文字然后撤回,也许我们会在ECMA-262规范的未来版本中看到它们.

由于JavaScript中没有Date文字,因此JSON也没有文字(如果JavaScript引擎无法解析,则JavaScript Object Notation名称不会太好;-)).不可否认,这是不幸的.许多Web服务将输出ISO 8601字符串,例如2010-03-23T23:57Z,但是为了在JavaScript中解析它,您需要使用自定义库,创建自定义函数或依赖于ECMAScript 5th的Date解析规范,该规范声明实现应该解析ISO 8601本地字符串.

如果它是你自己的JSON将在JavaScript中解析,你可以使用一些简单的东西,如自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;
}
Run Code Online (Sandbox Code Playgroud)

显然,您需要使用现代浏览器或json2.js中的本机JSON对象在解析时使用reviver.


SLa*_*aks 9

日期文字没有特殊格式.

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


Luk*_*fer 5

取决于序列化器。

它可能是以下之一:

/日期(1224043200000)/

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

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

new Date("2010-03-24") (据我了解,这是普遍接受的“javascript json”)

"2010-03-24"

ETC

  • 这不是我的错,没有实际的文字,而且每个序列化器都是不同的,但这是一个提供实际答案的地方,而不是迂腐的挑剔。 (10认同)