JSON で日付を処理する方法の問題は、ASP.NET AJAX Web サービスとページ メソッドを直接呼び出すときに発生する可能性のある厄介な問題の 1 つです。言語の他のすべてのデータ型とは異なり、JavaScript には Date を表現するための宣言的な方法がありません。したがって、それらを JSON 内に埋め込むには、少し手の込んだフットワークが必要です。
JSON の日付に関する正確な問題を説明しようと思います。
どうしたの?
根本的な問題は、JavaScript が Date オブジェクトを宣言的に表現する方法を提供しないことです。これが 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 オブジェクト内で日付を送信する適切な方法がなくなります。日付リテラルの欠如は問題です。誰かが解決策を提案できますか。