WCF DataContractJsonSerializer如何反序列化JSON DateTime?

时间:2018-12-05 22:26:50

标签: c# json wcf

我有2个datetime json字符串,唯一的区别是偏移量部分,一个是-08,另一个是-09:

"/Date(946713600000-0800)/"
"/Date(946713600000-0900)/"

当我使用DataContractJsonSerializer反序列化它们

var serializer = new DataContractJsonSerializer(typeof(DateTime));

byte[] byteArray1 = Encoding.UTF8.GetBytes("\"\\/Date(946713600000-0800)\\/\"");
MemoryStream stream1 = new MemoryStream(byteArray1);
var datetime1 = serializer.ReadObject(stream1 );

byte[] byteArray2 = Encoding.UTF8.GetBytes("\"\\/Date(946713600000-0900)\\/\"");
MemoryStream stream2 = new MemoryStream(byteArray2);
var datetime2 = serializer.ReadObject(stream2 );

结果使我变得庞大,datetime1和datetime2完全相同! 都是{1/1/2000 12:00:00 AM},datetime1.Kind和datetime2.Kind都是本地的。

我希望他们相差一小时。为什么它们相同?

1 个答案:

答案 0 :(得分:1)

两个日期之间的时间部分是相同的值。在您的示例中,表示为-0900和-0800的偏移量只是额外的信息,它表示捕获本地时间的UTC偏移量。