Jquery对时间进行处理--/Date(1351570839583+0800)

服务器端对一个装有 Person 类型的强类型集合进行了序列化,如下格式
jquery <wbr>接收 <wbr>json <wbr>格式数据 <wbr>转化时间类型输出

客户端采用Jquery 的ajax 方法接收 json 数据源
$.ajax({
                        url: 'ajax.aspx',
                        type: 'post',
                        dataType: 'json',
                        data: 'ajaxType=list',
                        success: function (json) {
                              for (var i = 0; i < json.length; i++) {
                                    var tr = '<tr><td>' + json[i].Name + '</td><td>' + json[i].Age + '</td><td>' + json[i].Six + '</td><td>' + json[i].Birthday + '</td></tr>';
                                    $("#table").append(tr);
                              }
                        }
                  });
上面的方法首先标识接收数据类型 dataType:'json'
页面上有个ID为 table 的table,我将解析出的json数据Append到table中,运行输出结果如下.
jquery <wbr>接收 <wbr>json <wbr>格式数据 <wbr>转化时间类型输出
10个Person对象都显示在了table中,但是你会发现 生日这一列js解析成了字符串 jquery <wbr>接收 <wbr>json <wbr>格式数据 <wbr>转化时间类型输出
回头看下json中 生日这列序列号后的字符串是:"\/Date(1352440747528+0800)\/"   这确实是个UTC时间, 1352440747528 表示  1970年1月1日以来的毫秒数,+0800(或者-0800) +,- 符号加 4位数字表示东/西时区

但是js脚本并不会把上面的时间字符串转化为时间类型,必须我们手动去处理一下.

解决方案:替换字符串
ajax接收解析Birthday时,需要替换一下字符,如下代码
json[i].Birthday 用 eval_r(json[i].Birthday.replace(/\/Date\((\d+)\+\d+\)\//gi, "new Date($1)"))代替.

运行后结果:
姓名 年龄 性别 生日
xxxx0 20 Wed Oct 31 16:38:35 UTC+0800 2012
xxxx1 21 Thu Nov 1 16:38:35 UTC+0800 2012
xxxx2 22 Fri Nov 2 16:38:35 UTC+0800 2012
xxxx3 23 Sat Nov 3 16:38:35 UTC+0800 2012
xxxx4 24 Sun Nov 4 16:38:35 UTC+0800 2012
xxxx5 25 Mon Nov 5 16:38:35 UTC+0800 2012
xxxx6 26 Tue Nov 6 16:38:35 UTC+0800 2012
xxxx7 27 Wed Nov 7 16:38:35 UTC+0800 2012
xxxx8 28 Thu Nov 8 16:38:35 UTC+0800 2012
xxxx9 29 Fri Nov 9 16:38:35 UTC+0800 2012

看了后一样纠结,这样的时间类型并不是我们需要的,多希望转化成  2012-10-31-16:39:39 这样的时间格式,看来我们还需要一个函数把  Wed Oct 31 16:38:35 UTC+0800 2012 这样的时间转化为  2012-10-31-16:39:39
方法网上就有现成的,下面贴出来
function utcToDate(utcCurrTime) {
                  utcCurrTime = utcCurrTime + "";
                  var date = "";
                  var month = new Array();
                  month["Jan"] = 1;
                  month["Feb"] = 2;
                  month["Mar"] = 3;
                  month["Apr"] = 4;
                  month["May"] = 5;
                  month["Jun"] = 6;
                  month["Jul"] = 7;
                  month["Aug"] = 8;
                  month["Sep"] = 9;
                  month["Oct"] = 10;
                  month["Nov"] = 11;
                  month["Dec"] = 12;
                  var week = new Array();
                  week["Mon"] = "一";
                  week["Tue"] = "二";
                  week["Wed"] = "三";
                  week["Thu"] = "四";
                  week["Fri"] = "五";
                  week["Sat"] = "六";
                  week["Sun"] = "日";

                  str = utcCurrTime.split(" ");
                  date = str[5] + "-";
                  date = date + month[str[1]] + "-" + str[2] + "-" + str[3];
                  return date;
            }

那么下一步就在输出生日的地方再调用一下这个函数就ok了
将  eval_r(json[i].Birthday.replace(/\/Date\((\d+)\+\d+\)\//gi, "new Date($1)"))
用 utcToDate(eval_r(json[i].Birthday.replace(/\/Date\((\d+)\+\d+\)\//gi, "new Date($1)"))) 代替

运行结果:
姓名 年龄 性别 生日
xxxx0 20 2012-10-31-16:42:56
xxxx1 21 2012-11-1-16:42:56
xxxx2 22 2012-11-2-16:42:56
xxxx3 23 2012-11-3-16:42:56
xxxx4 24 2012-11-4-16:42:56
xxxx5 25 2012-11-5-16:42:56
xxxx6 26 2012-11-6-16:42:56
xxxx7 27 2012-11-7-16:42:56
xxxx8 28 2012-11-8-16:42:56
xxxx9 29 2012-11-9-16:42:56

ok ,这样的时间就是我们需要的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值