关于 JS 中 new Date()
返回 NaN 的情况,一般有以下几个原因:
1. 传递给 Date()
函数的字符串格式不正确
如果传递给 Date()
函数的字符串格式不正确,那么直接调用 new Date()
后会返回 Invalid Date
,即不合法的日期对象,而在进行一些操作时会得到 NaN 的结果。
例如:
var date = new Date('2021-13-32');
console.log(date.getTime()); // NaN
上述代码中,我们试图通过 '2021-13-32'
这个字符串创建一个日期对象,但是这个日期是不合法的,所以 getTime()
方法返回的是 NaN。
2. 使用 Date()
构造函数时参数格式不正确
当使用 new Date()
函数时,如果传入的参数不符合规范,也会导致返回 NaN 的情况。
例如:
var date = new Date(2019, 2, 29, 12);
console.log(date.getTime()); // NaN
上述代码中,我们试图创建一个日期对象,表示 2019 年 3 月 29 日,但是由于 2019 年的 2 月没有 29 日,因此会得到 NaN 的结果。
3. 在不同的环境下,Date.parse() 返回的结果可能不同
在 JavaScript 中,我们可以使用 Date.parse()
方法将日期字符串转换为时间戳。但是在不同的浏览器和环境下,Date.parse()
返回的结果可能会不同。
例如:
var date = new Date(Date.parse('16-Feb-2021'));
console.log(date.getTime()); // NaN
在某些环境下,Date.parse()
识别 16-Feb-2021
这个日期字符串为有效字符串,但在一些环境下则会返回 NaN 的结果。
如果确实需要使用 Date.parse()
方法,则可以使用以下方法将日期字符串转换为一个标准格式:
var dateStr = '2022-08-31T13:24:07.864Z';
var date = new Date(dateStr);
console.log(date.getTime()); // 1662001447864
上述代码中,我们将 dateStr
字符串转换为一个标准的日期格式后,再使用 new Date()
创建一个日期对象,可以得到正确的时间戳。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:关于js new Date() 出现NaN 的分析 - Python技术站