将时间戳转换为可读日期时获得奇怪的结果。
var date = new Date(x);
console.log(x);
showTooltip(item.pageX, item.pageY, (date.getMonth()+1)+"-"+date.getDate()+"-"+date.getFullYear()+" / "+y );
控制台显示例如' 1404792000000'所以时间戳很好,但输出结果是NaN-NaN-NaN / 864'
我在这里做错了什么?
答案 0 :(得分:3)
使用typeof函数验证x,如下所示:
console.log(typeof x);
如果是时间戳(如1404792000000),X必须是数字(int),如果x是字符串,则使用parseInt()函数。
var date = new Date(parseInt(x));
showTooltip(item.pageX, item.pageY, (date.getMonth()+1)+"-"+date.getDate()+"-"+date.getFullYear()+" / "+y );
date = new Date("1404792000000"); // String : Date {Invalid Date}
date = new Date(1404792000000); // Integer : Date {Tue Jul 08 2014 ...}
date = new Date(parseInt("1404792000000")); // Str to int : Date {Tue Jul 08 2014 ...}
像这样:
date = new Date(+"1404792000000"); // Str to int
Which is better to use for a calculator parseInt() or eval() in Javascript?
答案 1 :(得分:1)
原因是new Date('1404792000000')
导致“无效日期”对象,因此所有访问方法(例如getMonth
)都返回NaN。这是因为the date constructor does not accept a string representing the epoch milliseconds。
与new Date(1404792000000)
比较,即“2014年7月7日星期一21:00:00 GMT-0700(太平洋夏令时间)”。注意如何指定号。