[C#] JavaScriptSerializer 時間格式
2012-10-31
之前有篇文章寫過 有關於 .Net 內建的 JSON 序列化跟反序列化方式..
這幾天發現日期會有對不起來的現象..因為之前JSON.net 用太習慣..
透過 .Net 內建的 JavaScriptSerializer 所產生的JSON
User donma=new User{Name = "Donma",Birth = new DateTime(2012,12,21)};
System.Web.Script.Serialization.JavaScriptSerializer objSerializer = new System.Web.Script.Serialization.JavaScriptSerializer();
var jsonStr1 = objSerializer.Serialize(donma);
JSON : {"Name":"Donma","Birth":"\/Date(1356019200000)\/"}
透過 JSON.net 還原 : 2012/12/20 下午 04:00:00
透過 JavaScriptSerializer 還原: 2012/12/20 下午 04:00:00
他的日期格式是UTC time..
之後我使用JSON.net 還原 印出來的日期 是 2012/12/20 下午 04:00:00
差了八小時..所以因為台灣時間是+8 所以她記錄的時間是算回+0 的時間
如果是 透過JSON.net 轉換
var donmaJson=JsonConvert.SerializeObject(donma);
Response.Write(donmaJson + "<br />");
JSON : {"Name":"Donma","Birth":"2012-12-21T00:00:00"}
透過 JSON.net 還原 : 2012/12/21 上午 12:00:00
透過 JavaScriptSerializer 還原: 2012/12/21 上午 12:00:00
他是透過文字方式記錄,所以跟你敘述的時段是正常的…
這一點真的需要注意一下…
這沒有所謂的對錯跟好壞,但是就是看需求要決定,不過一般的狀況下使用JSON.net 序列跟反序列化 會比較符合使用..
但是之前有做過一個關於 bid 的網站,因為考慮到跨國競標,這時候我一定會去使用 JavaScriptSerializer 處理,那時候光是計算Javascript 跟 .Net Server 的 UTC 轉換就花了很多時間…