それは本当にユースケースに依存すると思います。多くの場合、次のように、(日付を文字列にレンダリングする代わりに) 適切なオブジェクト モデルを使用する方が有益な場合があります。
{
"person" :
{
"name" : {
"first": "Tom",
"middle": "M",
...
}
"dob" : {
"year": 2012,
"month": 4,
"day": 23,
"hour": 18,
"minute": 25,
"second": 43,
"timeZone": "America/New_York"
}
}
}
確かに、これは RFC 3339 よりも冗長ですが、次のようになります。
- それは人間が読めるものでもあります
- 適切なオブジェクト モデルを実装している (JSON で許可されている限り、OOP の場合と同様)
- タイムゾーンをサポートします(指定された日時の UTC オフセットだけではありません)
- ミリ秒、ナノ秒、または単に小数秒などの小さな単位をサポートできます
- 個別の解析ステップ (日時文字列を解析するため) は必要ありません。JSON パーサーがすべてを行います。
- 任意の日時フレームワークまたは任意の言語での実装による簡単な作成
- 他の暦スケール (ヘブライ語、中国語、イスラム教など) や時代 (AD、BC など) をサポートするように簡単に拡張できます。
- 10000 年は安全です ;-) (RFC 3339 はそうではありません)
- 終日日付と浮動時間をサポートします (Javascript はサポートし
Date.toJSON()
ません)
正しい並べ替え (RFC 3339 の funroll で指摘されているように) は、日付を JSON にシリアル化するときに本当に必要な機能ではないと思います。また、同じタイム ゾーン オフセットを持つ日時にのみ当てはまります。