因为IE中"-"横杠分隔,会显示NaN,必须用“”/”斜杠,而谷歌火狐是用“-”
如下:
在chrome中使用,使用
new Date("20xx-xx-xx 00:00:00")
显示正常,但在IE中显示NaN,如果使用
new Date("20xx/xx/xx 00:00:00")则显示正常
所以利用Date.parse(date.replace(/-/g,"/")),格式化成日期类型,因为Data.parse只接受“/”斜杠,还要把横杠格式化成“/”斜杠。
由于parse()方法参数的日期格式为yyyy/MM/dd,所以需要将现有的日期格式通过replace()方法将日期字符串替换成yyyy/MM/dd格式。
//日期格式转换
function DateFormat(time,format){
//匹配到所有“-”,正则表达式为/-/g,也可以直接replay("-","/")
if(typeof time == "string"){
return new Date(Date.parse(time.replace(/-/g,"/"))).format(format);
}
return new Date(time).format(format);
}
Date.prototype.format = function(format) {
/*
* 使用例子:format="yyyy-MM-dd hh:mm:ss";
*/
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()
}
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;
}
用法
alert(DateFormat(new Date(), "yyyy年MM月dd日 hh:mm"))