當我使用DataContractJsonSerializer
將當前時間序列化爲DateTime
時,我得到以下1307654074638-0500
。如何格式化DateTime結構以使其與DataContractJsonSerializer使用的格式相匹配?
我想生成我自己的JSON,可以通過DataContractJsonSerializer
進行反序列化,但我無法弄清楚如何生成具有相同格式的DateTime
。
我相信它使用自紀元以來的毫秒數,因爲它是基數,但我總是收到大約6小時關閉的數字。我相信這與時區有關(我在中部時區),這是有道理的。
var myDate = DateTime.Now;
var epoch = new DateTime(1970, 01, 01, 01, 0, 0);
var serializer = new DataContractJsonSerializer(typeof (DateTime));
var ms = new MemoryStream();
serializer.WriteObject(ms, myDate);
Console.WriteLine(Encoding.UTF8.GetString(ms.ToArray()));
Console.WriteLine((myDate.AddTicks(-epoch.Ticks)).Ticks/10000);
輸出
"\/Date(1307654587318-0500)\/"
1307632987318
或爲方便比較
1307654587318-0500
1307632987318
是序列化問題還是你沒有使用DateTime.UtcNow? – 2011-06-09 21:28:39
http://msdn.microsoft.com/en-us/library/system.runtime.serialization.idatacontractsurrogate.getobjecttoserialize.aspx? – 2011-06-09 21:30:05
即使我使用UtcNow,它仍然關閉。 – ScArcher2 2011-06-09 21:34:12