使用JavaScriptSerializer进行序列化日期类型应该注意的问题

简介: 原文:使用JavaScriptSerializer进行序列化日期类型应该注意的问题JavaScriptSerializer在序列化DateTime时,是用刻度来表示的,具体在Json体现为:\/Date(315547200000)\/  用V进行一个闭包, 括号内为Date的刻度,刻度就是时间滴答滴...
原文: 使用JavaScriptSerializer进行序列化日期类型应该注意的问题

JavaScriptSerializer在序列化DateTime时,是用刻度来表示的,具体在Json体现为:\/Date(315547200000)\/  用V进行一个闭包, 括号内为Date的刻度,刻度就是时间滴答滴答经过的毫秒数,刻度计算的赶止时间为:UTC 1970年1月1日午夜开始的,
注意该起止时间是UTC时间,看看以下程序:

 
 
Customer cs = new Customer();
cs.BirthDay
= new DateTime( 1980 , 1 , 1 , 12 , 0 , 0 );
cs.Name
= " steven " ;
cs.Sex
= true ;

JavaScriptSerializer js
= new JavaScriptSerializer();
string output = js.Serialize(cs);

Customer cust
= js.Deserialize(output, typeof (Customer)) as Customer;
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 = new Customer();
cs.BirthDay
= new DateTime( 1980 , 1 , 1 , 12 , 0 , 0 ).ToUniversalTime();
cs.Name
= " steven " ;
cs.Sex
= true ;

JavaScriptSerializer js
= new JavaScriptSerializer();
string output = js.Serialize(cs);

Customer cust
= js.Deserialize(output, typeof (Customer)) as Customer;
if (cust != null )
{

txtBirthDay.Text
= cust.BirthDay.Value.ToLocalTime().ToString();

}

  好了,到此为此吧!

目录
相关文章
|
2月前
feign发起url请求日期序列化问题
feign发起url请求日期序列化问题
41 0
|
8月前
|
数据库
序列化类型为XX的对象时检测到循环引用
序列化类型为XX的对象时检测到循环引用
39 0
|
9月前
|
fastjson Java
fastjson全局日期序列化设置导致JSONField无效
fastjson通过代码指定全局序列化返回时间格式,导致使用JSONField注解标注属性的特殊日期返回格式失效
102 0
|
11月前
|
Dubbo 应用服务中间件
Dubbo使用Hessian2序列化时针对Byte类型出现java.lang.ClassCastException
Dubbo使用Hessian2序列化时针对Byte类型出现java.lang.ClassCastException
136 0
|
PHP
PHP:laravel日期序列化自定义默认日期格式
PHP:laravel日期序列化自定义默认日期格式
185 0
|
存储 SQL Web App开发
阿里一面:Flink的类型与序列化怎么做的
阿里一面:Flink的类型与序列化怎么做的
367 0
阿里一面:Flink的类型与序列化怎么做的
|
设计模式 JSON fastjson
替换seata BusinessActionContext序列化方式,从根源上解决反序列化类型不一致问题
替换seata BusinessActionContext序列化方式,从根源上解决反序列化类型不一致问题
149 0
|
JSON 编译器 Go
Go-结构体类型详解(声明、初始化、结构体指针、方法、序列化等)
Go-结构体类型详解(声明、初始化、结构体指针、方法、序列化等)
153 0
Go-结构体类型详解(声明、初始化、结构体指针、方法、序列化等)
|
存储 分布式计算 JavaScript
Fury系列(四):一个比Kryo/Hessian快30~40倍的类型前后兼容序列化器
问题背景类型前后兼容是复杂业务场景序列化的常见需求。在快速迭代的业务场景当中,读写端经常发生对象字段发生变更:在线应用场景:线上SOFA/HSF应用提供服务给多个调用方,服务的滚动升级以及各个调用方独立更新都可能导致对象类型不一致的情况;在线服务场景:在线服务框架常驻不更改对象类型,但调用方业务逻辑变动独立更新导致对象字段跟服务端不一致;对象持久化场景:对象数据序列化后持久化写入存储(如Spark
1387 2
Fury系列(四):一个比Kryo/Hessian快30~40倍的类型前后兼容序列化器
|
分布式计算 资源调度 Java
Hadoop中的MapReduce概述、优缺点、核心思想、编程规范、进程、官方WordCount源码、提交到集群测试、常用数据序列化类型、WordCount案例实操
Hadoop中的MapReduce概述、优缺点、核心思想、编程规范、进程、官方WordCount源码、提交到集群测试、常用数据序列化类型、WordCount案例实操
Hadoop中的MapReduce概述、优缺点、核心思想、编程规范、进程、官方WordCount源码、提交到集群测试、常用数据序列化类型、WordCount案例实操

热门文章

最新文章