js 字符串转换为时间格式

Date.prototype.Format = function (fmt)
{
var o=
{
"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+)/.test(fmt))
fmt=fmt.replace(RegExp.$1,(this.getFullYear()+"").substr(4-RegExp.$1.length));
for(var k in o)
if(new RegExp("("+k+")").test(fmt))
fmt=fmt.replace(RegExp.$1,(RegExp.$1.length==1)?(o[k]):(("00"+o[k]).substr((""+o[k]).length)));
return fmt;
}
var str = "2015-02-27";
console.log(new Date(str).Format("yyyy/MM/dd")); //这样的可以转换成2015/02/27

var str1 = "27-02-2015";
console.log(new Date(str1 ).Format("yyyy/MM/dd"));//这样得到结果就是“NaN/aN/aN”
请问怎么回事呢,谢谢

new Date在不同浏览器中支持的写法都不同,最兼容的写法是yyyy/MM/dd

其他写法在部分浏览器中无法解析
如,IE7不支持(yyyy-MM-dd,只支持/分割)
chrome支持的种类很多
Firefox支持yyyy/M/d但不支持yyyy-M-d等
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-03-02
在js里面,"27-02-2015"是非法的日期格式,所以new Date(str1) 这里就得到了一个非法的日期,后面再Format就出问题了。
NOTE:str1日期字符串应该更正为 "02-27-2015"
相似回答