何ブラウザ(複数可)あなたはこの中で起こる見ていますか?実際に対処している問題はJavascriptの解析であるため、私の経験上、問題は実際にはミリ秒の丸めであり、Zの存在ではありません。
IE9でこれを試してみてください:すべての日付が細かい解析ほとんどのブラウザでhttp://jsfiddle.net/b9chris/HaBP8/
'2013-06-13T20:43:55.6',
'2013-06-13T20:43:55.61',
'2013-06-13T20:43:55.61Z',
'2013-06-13T20:43:55.611',
'2013-06-13T20:43:55.611Z'
。 IE9はミリ秒数の3桁を必要とするため、IE9では最初の3つが失敗します。 2番目の2つはZの有無にかかわらず成功します。重要なのは3ミリ秒です。Zは.NETと同じようにJavascriptにDateTimeKindが含まれていないためZを含まないため、ZまたはNoはJavascriptが日付を内部化する方法とは関係ありません。時間に応じてミリ秒の数字が時々1または2になることがあるので、タイムスタンプを渡すと、ランダムに見える失敗が発生します。
I've reported this as a bug on the Json.Net Codeplex page;それはバグのコメントのメンテナーによって解雇され、閉鎖されました。オープンソースへあなたはこの回答のコードを使用して、このバグを回避することができます
:
https://stackoverflow.com/a/15939945/176877
明確にするために、それはDateTimeKindのためにそれなしで放出する場合、Zの欠如はJSON.Netの一部に誤りがあります。UTCが、それは、より一般的に無効なISO-8601日付ではありません - 何のZは、暗黙のうちに現地時間を意味します。no UTC関係情報は、時間の表現で指定されていない場合、時間がに仮定され
http://en.wikipedia.org/wiki/ISO_8601#Times
現地時間である。
上記のように、JavaScriptの構文解析はZについて気にしないので、あなたの目的のためには関係ありません。
また、実際にはUTCをJSON.Netに渡してこの問題を引き起こしていない可能性があります。 C#のDateTimeオブジェクトは種類がLocal, Unspecified, or UTCです。 UTCでないDateTimesが実際はUTCであると仮定することは公正ではありません。タイムゾーン情報なしでそれを渡すのが最も安全です。 .Net DateTime構造体はタイムゾーンでパンチするので、JSON.NetはデフォルトのDateTimes(DateTimeKind.Unspecified)をLocalとして出力し、.Net TimeZone libraryとの統合はできません。
代わりにhttp://json.codeplex.com/discussionsで質問する価値があります。 –
それは奇妙です。それは[自分のドキュメント](http://james.newtonking.com/projects/json/help/index.html?topic=html/DatesInJSON.htm)によると、4.5より前の動作はまったく異なる形式であり、 4.5動作はISO8601( 'Z'を含む)です。セットアップでカスタムコンバータを使用していますか? –
これは私のプロジェクトで問題になりました。なぜ彼らはISO8601規格を無視するのだろうか? – Toolkit