关键词

关于js new Date() 出现NaN 的分析

关于 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() 创建一个日期对象,可以得到正确的时间戳。

本文链接:http://task.lmcjl.com/news/8883.html

展开阅读全文