现在用json传输数据的情况越来越多,经常会在json中传时间,json传来的时间一般都是UTC格式,如:/Date(861811200000+0800)/,但是给用户看的时候,一般都是这种类型:yyyy-MM-dd,在以前做项目的时候,一般都是用sql的方式来取数据的,传输前都直接传处理好的时间字符串过来,但是现在经常用ORM的方式在开发,如果要传字符串,还得去多写Model,为了省事,查了一下资料,整理出以下方法:
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;
}
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;
}
function FormatDate(t) {
var n = t.toString();
var tt = eval(n.replace(/\/Date\((\d+)\+\d+\)\//gi, "new Date($1)"));
var d = new Date(tt);
var time = d.format("yyyy-MM-dd");
return time;
}
用的时候,直接FormatDate(json传来的UTC时间即可);
如:FormatDate("/Date(861811200000+0800)/")
结果输出:1997-04-24