クライアントとサーバーがあり、次のようなクラスがあるとします。
クライアント側: (タイムゾーン: UTC -8)
class Foo {
public int a;
public DateTime MyTime { get; set; }
}
var serialized = new JavaScriptSerializer().Serialize(new Foo { a = 1 });
// Send serialized to server
サーバー側: (タイムゾーン UTC-4)
// Receive JSON
var deserialized = new JavaScriptSerializer().Deserialize<Foo>(serialized);
if (deserialized.MyTime == DateTime.MinValue) {
// dostuff
}
ここでの私の問題はJavaScriptSerializer.Serialize(foo)
、1. january 0001 08:00:00MyTime.MinValue.ToUniversalTime()
が得られることです。次に、サーバー側でデシリアライズすると、8 時間が経過し、if テストが失敗します。サーバーとクライアントが同じタイムゾーンにないため、ローカルタイムにもできません。したがって、ローカルタイムは1. january 0001 04:00:00 になります。DateTime.MinValue
この最後に、私は質問する必要があります:
JavaScriptSerializer()
callを行う場合、これを処理する最良の方法は何ですか.ToUniversalTime()
。私の現在のアプローチは、0年前後の時間範囲をチェックすることです。- を持っていることを考えると
DateTime.MinValue
、この値が常に正確であると期待すべきではありません。DateTime.MinValue.ToUniversalTime()
に等しいべきではありませんDateTime.MinValue
か?DateTime.MinValue
基本的に、すべての変換ルーチンで探している明示的な if チェックが必要かどうかを尋ねています。
ありがとう。
JavaScriptSerializer:
http://msdn.microsoft.com/en-us/library/system.web.script.serialization.javascriptserializer.aspx
DateTime:
http://msdn.microsoft.com/en-us/library/system.datetime .aspx