木子屋 Dnawo's BLOG

C# JSON类DataContractJsonSerializer序列化DateTime原理分析

👤 dnawo 📅 2013-07-04 👁 6243 👍 0 💬 0 🔄 来源:本站原创
C#常用JSON类有两个:JavascriptSerializer和DataContractJsonSerializer,它们对同一DateTime对象(2013/7/4 12:00:00)序列化结果如下:

JavascriptSerializer序列化:\/Date(1372910400000)\/
DataContractJsonSerializer序列化:\/Date(1372910400000+0800)\/

1372910400000是怎么得来的?简单说明如下:

DateTime basetime = DateTime.Parse("1970-01-01");
DateTime time = DateTime.Parse("2013/7/4 12:00:00");
long ticks = (time.ToUniversalTime().Ticks - basetime.Ticks) / 10000;
//long ticks = (long)(time.ToUniversalTime() - basetime).TotalMilliseconds;
Console.WriteLine(ticks); //1372910400000

知道了原理,反序列化时处理如下:

DateTime basetime = DateTime.Parse("1970-01-01");
long ticks = basetime.Ticks + 1372910400000 * 10000;
DateTime time = new DateTime(ticks).ToLocalTime();
Console.WriteLine(time); //2013/7/4 12:00:00

客户端Javascript处理方法:

var time=new Date();
time.setTime(1372910400000);
alert(time);

图片

评论(0)

暂无评论。

计算题
评论需审核通过后显示
← 上一篇 MIUI文件管理器社区开源版编译发布示例 下一篇 → Javascript Date对象格式化