Windows Azure ( http://ipredikt.com )で動作する予測ベースのアプリがあります。私が知る限り、Azure の時計は GMT タイム ゾーンに同期されています。ここに私が遭遇している問題があります:
DateTime 型の CreateDate という DB フィールドがあり、その値を 2011 年 6 月 10 日午前 12 時 30 分に設定したとします。新しい予測が作成されたとき。db テーブルの中をのぞくと、日付が正しく設定されています。この値に触れたり、変更したりすることは決してありません。ただし、API で値を読み取り、シリアル化してクライアントに送信すると、2011 年 6 月 9 日午後 5 時 30 分という値の日付が取得されます。(API dll もクラウド上にあり、おそらく DB と併置されています。)
私のクライアント ブラウザは PST (太平洋時間帯) で実行されており、7 時間の違いは PST と GMT の違いによるものと思われます。値をシリアル化するために使用される API コードは次のようになります。
System.Web.Script.Serialization.JavaScriptSerializer シリアライザー = new JavaScriptSerializer();
return serializer.Serialize(dataObject);
これは JavaScriptSerializer オブジェクトのバグですか、それともこのデルタを修正するトリックはありますか? 基本的に、.NET フレームワークがこの値に何らかの形で干渉することは望ましくありません。DB フィールドがそのまま返されるようにしたいだけです。