js new Date() 六年老前端踩坑

147 阅读2分钟

预期new Date('1723968910059') 可转为yyyy/mm/dd

结果:调用时间转换函数报错,返回 NaN/Na/Na

出现问题就是new Date(), 括号里使用了字符串的数值

const date = new Date('1723968910059')
consloe.log(date) // 输出:Invalid Date

正常情况

1. Date 构造函数的使用

使用数字(时间戳)

如果你传递一个数字给 Date 构造函数,它会将其解释为自 1970 年 1 月 1 日 UTC(Unix 纪元)以来的毫秒数。例如:


let timestamp = 1723968910059;
let date = new Date(timestamp); 
console.log(date.toString()); // 输出: 合法的日期字符串

使用字符串

如果你传递一个字符串,它需要是一个有效的日期格式,或者可以被解析为有效的日期。例如:

let date1 = new Date('2024-08-18T00:00:00Z');
console.log(date1.toString()); // 输出: 合法的日期字符串

2. 为什么 new Date('1723968910059') 会有问题

  • 字符串解析: new Date('1723968910059') 中的 '1723968910059' 是一个字符串,而不是一个可以被解析的日期格式。这会导致 Date 构造函数不能正确解析字符串。

let timestamp = parseInt('1723968910059', 10);
let date = new Date(timestamp);
console.log(date.toString()); // 输出: 合法的日期字符串

3. 解决方法

确保你传递的是正确的格式。如果你的时间戳是以字符串形式存储的,你需要将其转换为数字,或者直接传递数字:

// 将字符串转换为数字
let timestamp = Number('1723968910059');
let date = new Date(timestamp);
console.log(date.toString()); // 合法的日期字符串