JSON 中如何处理日期的问题是直接调用 ASP.NET AJAX Web 服务和页面方法时可能出现的比较麻烦的问题之一。与该语言中的所有其他数据类型不同,JavaScript 没有提供表示日期的声明方法。因此,将它们嵌入 JSON 需要一些花哨的步法。
我将尝试解释 JSON 中的日期到底有什么问题。
有什么问题?
根本问题是 JavaScript 没有提供一种以声明方式表达 Date 对象的方法。您之前可能已经将其描述为(缺少)日期文字。什么是字面量?为了说明,这些是其他几种数据类型的文字:
// String
'foo';
// Number
3.14;
// Boolean
true;
// Array
[1, 2, 3, 5, 7];
// Object
{ pi: 3.14, phi: 1.62 };
不幸的是,当涉及到日期时,缺少文字意味着创建日期的唯一方法是显式初始化 Date 对象:
// Correct.
new Date('4/26/09');
// Correct (the month is 0 indexed, hence the 3).
new Date(2009, 3, 26);
// Incorrect. This is a string, not a Date.
'4/26/09';
虽然在编写客户端 JavaScript 代码时这个限制很好,但它让我们没有一种在 JSON 对象中传输日期的好方法。缺少日期文字是一个问题,有人可以提出解决方案。