鉴于我有一个客户端和一个服务器,以及这样的类:
客户端:(时区: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)
,MyTime.MinValue.ToUniversalTime()
这给了我1. january 0001 08:00:00。接下来,当我在服务器端反序列化时,它看到了 8 个小时,DateTime.MinValue
并且 if 测试失败。我也不能对 localtime 做,因为服务器和客户端不在同一个时区,所以 localtime 会给我1. january 0001 04:00:00。
最后,我必须提出以下问题:
JavaScriptSerializer()
考虑到调用,处理此问题的最佳方法是什么.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
日期时间:http:
//msdn.microsoft.com/en-us/library/system.datetime .aspx