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

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

2011-09-26 17:25 344 查看
今天在做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日”。这就是我们想要的格式 了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: