當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
使用JavaScriptSerializer进行序列化日期类型应该注意时区的问题
生活随笔
收集整理的這篇文章主要介紹了
使用JavaScriptSerializer进行序列化日期类型应该注意时区的问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
scriptSerializer在序列化DateTime時,是用刻度來表示的,具體在Json體現為:\/Date(315547200000)\/? 用V進行一個閉包, 括號內為Date的刻度,刻度就是時間滴答滴答經過的毫秒數,刻度計算的趕止時間為:UTC 1970年1月1日午夜開始的,
注意該起止時間是UTC時間,看看以下程序:
?
Customer cs?=newCustomer();cs.BirthDay?=newDateTime(1980,?1,?1,?12,?0,?0);
cs.Name?="steven";
cs.Sex?=true;
java scriptSerializer js?=newjava scriptSerializer();
stringoutput?=js.Serialize(cs);
Customer cust?=js.Deserialize(output,?typeof(Customer))?asCustomer;
if(cust?!=null)
{
txtBirthDay.Text?=cust.BirthDay.Value.ToString();
}
這樣處理時會帶來一點問題就是,在進行序列化之后的日期不會是原來的 1980-1-1 12:00:00,而是會根據utc時間得來的一個時間,有可能是1979-12-31 4:00:00,這樣在界面進行UI展示的時候會帶來一致的問題!
?? 其它處理很簡單,序列化之前先把本地時間轉換來UTC時間,再在反序列之后,把UTC時間轉換為本地時間就OK了,看看更改之后代碼:
?
Customer cs?=newCustomer();cs.BirthDay?=newDateTime(1980,?1,?1,?12,?0,?0).ToUniversalTime();
cs.Name?="steven";
cs.Sex?=true;
java scriptSerializer js?=newjava scriptSerializer();
stringoutput?=js.Serialize(cs);
Customer cust?=js.Deserialize(output,?typeof(Customer))?asCustomer;
if(cust?!=null)
{
txtBirthDay.Text?=cust.BirthDay.Value.ToLocalTime().ToString();
}
轉載于:https://www.cnblogs.com/xusion/archive/2012/09/23/2698983.html
總結
以上是生活随笔為你收集整理的使用JavaScriptSerializer进行序列化日期类型应该注意时区的问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql获取当前时间,及其相关操作
- 下一篇: qq飞车多少幸运值能开出飞跃(PC版官方