您的位置:首页 > Web前端 > JavaScript

json格式日期转换为自定义格式

2012-05-18 18:43 357 查看
今天在做AJAX数据传输方面的示例。突然发现当以json格式返回日期对像时,直接取得的结果如下 '/Date(1316756746000)/'。这个格式数据,我以前未使用过,也不知道如何转换为datetime的格式。



最先想到的办法当然是从网上找了,不过很可惜,找了很多方法都不见效。不过有一点提醒了我,在我找到的资料中提到,其中的一长串数据’1316756746000‘实际代表是毫秒。于是我想直接用毫秒生成日期了。具体做法如下:



1、过滤不需要的字符,如/和Date(等



var xx='/Date(1316756746000)/';

var tt=xx.substring(6,xx.length-2);

这样就得到如下结果

1316756746000



2、把毫秒转换为日期

var jsonDate=new Date(parseInt( xx.substring(6,xx.length-2)));//注意要先转换为int类型哟



3、把日期格式化为想要的格式,由于没有直接的格式化方法,所以采用了网上的公共方法。如下

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;

}



然后使用这个方法进行格式化



var result = jsonDate.format("yyyy年mm月dd日");



这时,再打印出来可以看到日期变成了 “2011年9月23日”。这就是我们想要的格式 了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: