.Net Json序列化日期/Date(xxxx)/的Js转化&C#转化

原创 2016年06月02日 10:53:53

1..Net中对于日期格式化结果都是 /Date(xxxx)/ 的格式,然而xxxx是指定时间距离标准时间(UTC)的总得毫秒数 (1970.1.1 00:00:00.000)

处理方式说明:使用正则表单时匹配出总毫秒数,然后进行日期转化

正则内容:

//只获取正整数部分,不考虑大于1970年问题
string p = @"\\/Date\((\d+)\)\\/";
//考虑小于1970年的问题
string p = @"\\/Date\((-*\d+)\)\\/";

一、前台JS处理

转化成 Js Date对象

var str = '/Date(1464941268937)/';

var date = new Date(1464941268937);
console.info(date.toString());
var date2 = new Date(1464941268937);
console.info(date2.toLocaleString());

var date3 = eval(str.replace(/\/Date\((\d+)\)\//gi, "new Date($1)"));
console.info(date3);


2.对Date对象格式化处理方法

var date = new Date(1464941268937 + 0800);
Date.prototype.format = function (format) {
    var o = {
        "M+": this.getMonth() + 1, //month 
        "d+": this.getDate(), //day 
        "h+": this.getHours(), //hour 
        "m+": this.getMinutes(), //minute 
        "s+": this.getSeconds(), //second 
        "q+": Math.floor((this.getMonth() + 3) / 3), //quarter 
        "S": this.getMilliseconds() //millisecond 
    }

    if (/(y+)/.test(format)) {
        format = format.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
    }

    for (var k in o) {
        if (new RegExp("(" + k + ")").test(format)) {
            format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));
        }
    }
    return format;
}
document.write(date.format("yyyy-MM-dd hh:mm:ss"));
document.write('<br />');
document.write(date.format("yyyy年MM月dd日"));

二、后台C#处理方式

//string str = DateTime.Now.ToJsonString();
// string str = @"\/Date(1464941268937)\/";
string str = @"\/Date(-349776000000)\/";

//只获取正整数部分,不考虑大于1970年问题
string p = @"\\/Date\((\d+)\)\\/";
//考虑小于1970年的问题
string p = @"\\/Date\((-*\d+)\)\\/";

Regex reg = new Regex(p);
Match match = reg.Match(str);
Console.WriteLine(ConvertJsonDateToDateString(match));
处理方法:

/// <summary>    
/// 将Json序列化的时间由/Date(1294499956278+0800)转为字符串    
/// </summary>    
private static string ConvertJsonDateToDateString(Match m)
{
    string result = string.Empty;
    DateTime dt = new DateTime(1970, 1, 1);
    dt = dt.AddMilliseconds(long.Parse(m.Groups[1].Value));
    dt = dt.ToLocalTime();
    result = dt.ToString("yyyy-MM-dd HH:mm:ss");
    return result;
}


关于UTC(全球标准时间)

UTC 即全球标准时间,是全球范围内计时的科学标准。它基于精心维护的原子钟,在全球范围内精确到微秒。由于地球旋转的不规则性,每年有两次机会根据需要增减跳跃秒数,以调整 UTC。作为全球最精确的时间系统,天文学家、航海家、“太空跟踪网”(DSN) 以及其他科学性学科都使用它。它的参考点是英国格林威治:地球本初子午线的午夜,也是 UTC 的午夜 (00:00:00.000000) 

现在计算机和一些电子设备时间的计算和显示是以距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量为标准的,如1970-1-10 20:47 
偏移量为2724441632毫秒,出现类似字样说明时间被初始化了。


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

C#DateTime时间与JS Date时间的相互转化(C#后台)

C#后台接收到传入的字符串,进行处理 //设置转换格式 需要引入命名空间:using System.Globalization; string fmtDate = "ddd...

Newtonsoft.Json序列化字符串-格式化和时间格式问题

最近C#中需要将实体进行json序列化,使用了Newtonsoft.Json         public static void TestJson()         {       &#...
  • wlphlj
  • wlphlj
  • 2016-07-21 15:07
  • 2337

c#json如何格式化日期和时间

在调用JsonConvert.SerializeObject()的时候会出现日期时间 比如:2016-08-22T10:23:38 希望转换的时候不需要T,或者我们需要的只有日期2016-08-2...

Java与C#间json日期格式互转完美解决方案

   作用一种简单方便的数据传输方案,JSON已经成为替代XML的事实标准。然而在JSON中,时间(DateTime,Timestamp,Date等)格式一直没有很好地统一,当需要跨平...

Newtonsoft.Json时间转换

序列化 Newtonsoft.json时间转换

Json.net 常用使用小结

Json.net常用使用小结
  • Joyhen
  • Joyhen
  • 2014-04-30 17:35
  • 33856

.net日期时间格式化处理

一、日期和时间的格式化处理: 1.绑定时格式化日期方法:      2.数据控件如DataGrid/DataList等的件格式化日期方法:  e.Item.Cell[0].T...

[NET]Asp.net日期字符串格式化显示--DateTime.ToString()用法详解

Asp.net日期字符串格式化显示--DateTime.ToString()用法详解我们经常会遇到对时间进行转换,达到不同的显示效果,默认格式为:2006-6-6 14:33:34 如果要换成成200...

DateTime类型序列化

1、JavaScriptSerializer与DataContractJsonSerializer(命名空间System.ServiceModel.Web及System.Runtime.Seriali...

使用Json.net序列化和反序列化自定义日期

在使用json.net序列化和反序列化DateTime类型数据的时候,经常会碰到一些麻烦。比如不同的接口需要的日期显示格式不同,对数据库中空值和日期最小值的处理。   先看下面的例子,需要序列化和反序...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)