直切主题,场景:当使用ajax请求参数时,如果服务器是Date星,那么JS中得到的时间是Long型时间戳,这种格式直接显示给用户不妥,所以需要进行格式转换,当然,方法很多。我只介绍我使用的这种方法,仅供参考。
1、我们需要扩展Date对象,增加一个自定义属性。
Date.prototype.format = function(format) {
var date = {
"M+": this.getMonth() + 1,
"d+": this.getDate(),
"h+": this.getHours(),
"m+": this.getMinutes(),
"s+": this.getSeconds(),
"q+": Math.floor((this.getMonth() + 3) / 3),
"S+": this.getMilliseconds()
};
if (/(y+)/i.test(format)) {
format = format.replace(RegExp.$1, (this.getFullYear() + '').substr(4 - RegExp.$1.length));
}
for (var k in date) {
if (new RegExp("(" + k + ")").test(format)) {
format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? date[k] : ("00" + date[k]).substr(("" + date[k]).length));
}
}
return format;
}
好了,我们为Date对象扩展了一个format属性,支持yyyy,MM,dd,hh,nn,ss,qq,SS转换。
2、关于使用方法。
比如我有一个时间字符串,先转成Date对象,然后调用我们定义的format属性.
var date = '2016-10-24 10:00:00';
date = new Date(date).format('yyyy-MM-dd');
alert(date);
date = new Date(date).format('yyyy-MM-dd');
alert(date);
就是这样使用,alert弹出的就是2016-10-24了。
当然,Long型时间戳也是这样转换的。