使用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();

}

  好了,到此为此吧!

目录
相关文章
feign发起url请求日期序列化问题
feign发起url请求日期序列化问题
462 0
|
JSON 前端开发 JavaScript
聊聊 Go 语言中的 JSON 序列化与 js 前端交互类型失真问题
在Web开发中,后端与前端的数据交换常使用JSON格式,但JavaScript的数字类型仅能安全处理-2^53到2^53间的整数,超出此范围会导致精度丢失。本文通过Go语言的`encoding/json`包,介绍如何通过将大整数以字符串形式序列化和反序列化,有效解决这一问题,确保前后端数据交换的准确性。
355 4
|
JSON 缓存 NoSQL
redis序列化数据时,如何包含clsss类型信息?
通过配置 `com.fasterxml.jackson.databind.ObjectMapper` 的 `enableDefaultTyping` 方法,可以使序列化后的 JSON 包含类信息。
267 2
springboot解决jackson序列化Long类型精度失效问题
springboot解决jackson序列化Long类型精度失效问题
446 0
|
存储 分布式计算 JavaScript
Fury系列(四):一个比Kryo/Hessian快30~40倍的类型前后兼容序列化器
问题背景类型前后兼容是复杂业务场景序列化的常见需求。在快速迭代的业务场景当中,读写端经常发生对象字段发生变更:在线应用场景:线上SOFA/HSF应用提供服务给多个调用方,服务的滚动升级以及各个调用方独立更新都可能导致对象类型不一致的情况;在线服务场景:在线服务框架常驻不更改对象类型,但调用方业务逻辑变动独立更新导致对象字段跟服务端不一致;对象持久化场景:对象数据序列化后持久化写入存储(如Spark
2045 2
Fury系列(四):一个比Kryo/Hessian快30~40倍的类型前后兼容序列化器
|
数据库
序列化类型为XX的对象时检测到循环引用
序列化类型为XX的对象时检测到循环引用
152 0
|
fastjson Java
fastjson全局日期序列化设置导致JSONField无效
fastjson通过代码指定全局序列化返回时间格式,导致使用JSONField注解标注属性的特殊日期返回格式失效
457 0
|
存储 SQL Web App开发
阿里一面:Flink的类型与序列化怎么做的
阿里一面:Flink的类型与序列化怎么做的
635 0
阿里一面:Flink的类型与序列化怎么做的
|
Dubbo 应用服务中间件
Dubbo使用Hessian2序列化时针对Byte类型出现java.lang.ClassCastException
Dubbo使用Hessian2序列化时针对Byte类型出现java.lang.ClassCastException
296 0
|
JSON 编译器 Go
Go-结构体类型详解(声明、初始化、结构体指针、方法、序列化等)
Go-结构体类型详解(声明、初始化、结构体指针、方法、序列化等)
296 0
Go-结构体类型详解(声明、初始化、结构体指针、方法、序列化等)