2012-02-03 12 views
0

私はASP.NET MVC3を持っています。Microsoft JSONシリアライザを使用する快適なWeb​​サービスです。このサービスは、.NET DateTime値を含むデータを返します。WebサービスでのJSONデータのタイムゾーンシフト

Webサービスは、Newtonsoft JSONライブラリを使用して返されたデータを逆シリアル化するSilverlightクライアントによってアクセスされます。

クライアントで取得した日付の値は、サービスから送信された値の5時間前です。私は東部時間帯(米国)にいるので、クライアントからGMTとして解釈されるサービスから送信されたローカル時間のようです。

私の質問はこれです:この矛盾を処理する良い方法は何ですか? MicrosoftやNewtonsoftのいずれかのライブラリに、これに対処するための設定があります。クライアントが受け取った時間から5時間を減算するよりも少し優雅です。

おかげ

+0

サーバーから日付/時刻が返される方法を正確に表示できますか?そしてそれは正しいwrtタイムゾーンですか? –

+0

"\\/Date(1328374553000)\\/\" –

+0

私はまったく同じ問題をext.net(順にNewtonsoftを使用)とasp.net Webサービスを使用しています。どんな*本当の*答え? – dpant

答えて

1

最初に(それは程度BACKBONE.JSですが、同様にあなたの問題に適用されます)この質問を見て:(Jacksonのような)How to handle dates in Backbone?

いくつかのライブラリがでUNIX時間に日付をシリアル化デフォルト。サーバーから送信されたデータの日付/時刻はどのように表されますか?単純な整数でない場合は、常に、タイムゾーンを明示的に定義するISO 8601を使用して表現する必要があります(UTC時間はZ)。

時刻がテキスト形式でサーバーから送信されますが、タイムゾーンが指定されていない場合、サーバーはそれを誤ってマーシャリングします。時間が正しい時間帯があるのにクライアントがそれを破棄すると、それはクライアントの障害です。

+0

お返事いただきありがとうございます。私は、図書館が直接扱うことを望んでいました。私は、データがUNIXのデータ時間として送信されていることを知っています。 "\\/Date(1328374553000)\\/\もちろん、受信時の時刻を調整するのは難しくありません。自分のJSONシリアライザ/デシリアライザを作成することは望ましくありません。それらを書いても一貫した方法で日付/時刻を処理することはできません.ISO 8601に慣れていれば、問題はありません。 –

関連する問題