Ответ 1
Были предложены литералы даты возможно, мы увидим их в будущем выпуске спецификации ECMA-262.
Поскольку нет литерала даты в JavaScript, для JSON нет литерала (JavaScript Object Notation не будет слишком хорошим именем если он не может быть проанализирован движком JavaScript;-)). По общему признанию, это несчастливо. Многие веб-службы будут выводить строку ISO 8601, например. 2010-03-23T23:57Z
, но для того, чтобы разобрать его на JavaScript, вам нужно будет использовать пользовательскую библиотеку, создать пользовательскую функцию или полагаться на спецификацию синтаксического анализа 5-й даты ECMAScript, в которой говорится, что реализации должны анализировать строки ISO 8601 изначально.
Если это ваш собственный JSON, который будет анализироваться на JavaScript, вы можете использовать что-то простое, например миллисекунды, с 1 января 1970 года 00:00 с идентификатором, а затем передать функцию reviver в JSON.parse:
var myJSON = '{"MyDate":"@[email protected]"}'
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 при разборе.