在前端开发过程中,获取当前时间戳是经常会遇到的需求,比如生成唯一标识、计算时间间隔、记录操作时间等场景都需要用到时间戳。JavaScript提供了多种不同的方式来获取当前时间戳,这些方式的实现逻辑和返回值存在一定区别,下面我们就来详细对比5种常用的获取方式。
什么是时间戳
时间戳指的是从1970年1月1日00:00:00 UTC到当前时间所经过的毫秒数,是一个数值类型的数据。在JavaScript中,时间戳通常是13位的毫秒数,部分场景下也会用到10位的秒数时间戳。
5种获取当前时间戳的方式
1. Date对象的getTime方法
这是最传统也最常用的获取时间戳的方式,先创建Date实例,再调用实例的getTime方法获取毫秒数。
// 创建当前时间的Date实例 const now = new Date(); // 调用getTime方法获取毫秒级时间戳 const timestamp1 = now.getTime(); console.log(timestamp1); // 输出13位毫秒数时间戳
2. Date对象的valueOf方法
Date实例的valueOf方法会返回Date对象的原始值,对于Date对象来说,原始值就是对应的毫秒数时间戳。
const now = new Date(); // 调用valueOf方法获取时间戳 const timestamp2 = now.valueOf(); console.log(timestamp2); // 输出13位毫秒数时间戳
3. Date.parse方法
Date.parse方法接收一个时间字符串作为参数,返回该时间对应的毫秒数时间戳,如果传入当前时间的字符串或者直接传入当前Date实例,也可以获取当前时间戳,但这种方式精度可能有问题。
// 传入当前时间字符串 const timestamp3 = Date.parse(new Date().toString()); console.log(timestamp3); // 输出13位毫秒数时间戳,部分浏览器可能返回NaN
4. Date.now方法
Date.now是ES5新增的静态方法,不需要创建Date实例,直接调用就可以返回当前时间的毫秒数时间戳,代码更简洁。
// 直接调用静态方法获取时间戳 const timestamp4 = Date.now(); console.log(timestamp4); // 输出13位毫秒数时间戳
5. 一元加运算符转换Date实例
使用一元加运算符+对Date实例进行转换,会触发Date实例的valueOf方法,从而返回对应的毫秒数时间戳。
const now = new Date(); // 一元加运算符转换 const timestamp5 = +now; console.log(timestamp5); // 输出13位毫秒数时间戳
5种方式对比
| 获取方式 | 返回值 | 兼容性 | 代码简洁度 | 推荐程度 |
|---|---|---|---|---|
| getTime方法 | 13位毫秒数 | 所有浏览器支持 | 中等 | 高 |
| valueOf方法 | 13位毫秒数 | 所有浏览器支持 | 中等 | 中 |
| Date.parse方法 | 13位毫秒数(部分情况异常) | 所有浏览器支持 | 中等 | 低 |
| Date.now方法 | 13位毫秒数 | IE9及以上支持 | 高 | 高 |
| 一元加运算符 | 13位毫秒数 | 所有浏览器支持 | 高 | 中 |
获取10位秒级时间戳
如果需要的是10位的秒级时间戳,只需要将获取到的13位毫秒数时间戳除以1000,再取整即可。
// 获取秒级时间戳 const secondTimestamp = Math.floor(Date.now() / 1000); console.log(secondTimestamp); // 输出10位秒数时间戳
总结
日常开发中,优先推荐使用Date.now方法,代码简洁且返回值稳定,如果需要兼容IE8及以下浏览器,可以使用new Date().getTime()的方式。不推荐使用Date.parse获取当前时间戳,因为它的参数解析规则在不同浏览器中可能存在差异,容易出现返回值不符合预期的情况。开发者可以根据项目的兼容要求和代码风格选择合适的获取方式。
JavaScript时间戳Date对象getTimeDate_now修改时间:2026-06-20 13:24:33