javascript 关于new Date()返回NaN

JavaScript08

javascript 关于new Date()返回NaN,第1张

new Date("2011-01-01 01:01:00")// 这里出错

是数字方式,不是字符方式

new Date(2011,1,1,1,1,1)

/*字符转日期*/StringToDate=function(DateStr){if(typeof DateStr=="undefined")return new Date()if(typeof DateStr=="date")return DateStrvar converted = Date.parse(DateStr)var myDate = new Date(converted)if(isNaN(myDate)){DateStr=DateStr.replace(/:/g,"-")DateStr=DateStr.replace(" ","-")DateStr=DateStr.replace(".","-")var arys= DateStr.split('-')switch(arys.length){case 7 : myDate = new Date(arys[0],--arys[1],arys[2],arys[3],arys[4],arys[5],arys[6])breakcase 6 : myDate = new Date(arys[0],--arys[1],arys[2],arys[3],arys[4],arys[5])breakdefault: myDate = new Date(arys[0],--arys[1],arys[2])break}}return myDate}

用这个转一下吧

"下午 "+hours -12

加入时20:35

问题出在这里,由于有字符串,这里加号功能是字符串连接

结果是"下午8"-12

由于减号不支持字符串操作,只能尝试将"下午8"转换为数字,结果发现无法转换

因此就产生了NaN 意思是 not a number 。即 非数字。

因此这个表达式改为:"下午" + (hours - 12)即可

另外 写程序不需要莫名的一些括弧

timeValue = hours >12 ? "下午 " + (hours -12) : "上午 "+hours

这样写完全可以达到目的

也能让表达式看起来更清晰