JavaScript开发过程中,时间处理是非常常见的需求,例如记录用户操作时间、生成唯一标识、计算程序执行耗时、处理接口请求时间等。其中,时间戳是一种非常重要的时间表示方式。掌握JS获取当前时间戳的方法,可以帮助开发者更加灵活地处理日期和时间数据。
时间戳通常指从1970年1月1日00:00:00(UTC时间)开始计算,到当前时间经过的总毫秒数。在JavaScript中,获取当前时间戳有多种方式,不同场景下可以选择不同的实现方法。
使用Date.now()获取当前时间戳
Date.now()是JavaScript中最推荐的获取当前时间戳的方法,它可以直接返回当前时间距离1970年1月1日00:00:00 UTC的毫秒数。
示例代码:
JavaScriptconst timestamp = Date.now(); console.log(timestamp);
输出结果类似:
1787452800000
返回值是一个整数,单位为毫秒。
这种方式代码简洁,执行效率较高,也是现代JavaScript开发中最常用的方法。
适用场景:
-
记录当前操作时间
-
生成临时编号
-
计算时间差
-
请求接口添加时间参数
-
判断缓存是否过期
例如计算代码执行时间:
JavaScriptconst startTime = Date.now(); // 模拟耗时操作 for (let i = 0; i < 1000000; i++) { console.log; } const endTime = Date.now(); console.log(`执行耗时:${endTime - startTime}毫秒`);
通过两个时间戳相减,可以快速得到程序运行耗时。
使用new Date().getTime()获取时间戳
除了Date.now()之外,还可以通过创建Date对象,再调用getTime()方法获取当前时间戳。
示例:
JavaScriptconst timestamp = new Date().getTime(); console.log(timestamp);
执行结果与Date.now()相同。
原理:
JavaScriptnew Date()
会创建当前时间对象,而:
JavaScriptgetTime()
会返回该日期对应的时间戳。
这种写法兼容性较好,在早期JavaScript项目中非常常见。
使用valueOf()方法获取时间戳
JavaScript中的Date对象可以通过valueOf()方法转换为数字类型,该数字就是对应的时间戳。
示例:
JavaScriptconst timestamp = new Date().valueOf(); console.log(timestamp);
返回:
1787452800000
实际上:
JavaScriptnew Date().valueOf()
与:
JavaScriptnew Date().getTime()
效果基本一致。
不过在代码可读性方面,getTime()表达更加明确,因此实际开发中更推荐使用getTime()。
使用Number转换Date对象获取时间戳
JavaScript允许通过Number函数将Date对象转换为数字:
JavaScriptconst timestamp = Number(new Date()); console.log(timestamp);
执行后同样会得到当前时间戳。
原因是Date对象在进行数字转换时,会自动调用内部的valueOf()方法。
虽然这种方式可以实现目标,但代码含义不够直观,因此一般不作为首选方案。
获取秒级时间戳的方法
JavaScript默认获取的是毫秒级时间戳,而很多后端系统(例如PHP、Java、Python等)使用的是秒级时间戳。
如果需要获取秒级时间戳,可以将毫秒时间戳除以1000:
JavaScriptconst timestamp = Math.floor(Date.now() / 1000); console.log(timestamp);
示例输出:
1787452800
区别如下:
| 类型 | 单位 | 示例 |
|---|---|---|
| 毫秒时间戳 | ms | 1787452800000 |
| 秒时间戳 | s | 1787452800 |
在开发接口参数时,需要根据后端要求选择正确的时间戳格式,否则可能导致时间解析错误。
将时间戳转换为日期时间
获取时间戳后,经常需要将它转换为正常日期格式。
例如:
JavaScriptconst timestamp = Date.now(); const date = new Date(timestamp); console.log(date);
输出:
Sun Aug 23 2026 13:00:00 GMT+0800
如果需要格式化日期,可以自定义处理:
JavaScriptfunction formatDate(timestamp) { const date = new Date(timestamp); const year = date.getFullYear(); const month = date.getMonth() + 1; const day = date.getDate(); return `${year}-${month}-${day}`; } console.log(formatDate(Date.now()));
输出:
2026-8-23
获取UTC时间戳
JavaScript获取的时间戳本身基于UTC标准,因此不受本地时区影响。
例如:
JavaScriptconsole.log(Date.now());
无论用户位于中国、日本还是美国,得到的时间戳表示的是同一个绝对时间点。
这也是时间戳适合进行跨地区数据存储的重要原因。
JS时间戳常见应用场景
1. 判断数据是否过期
例如缓存有效期判断:
JavaScriptconst expireTime = 1735689600000; if (Date.now() > expireTime) { console.log("数据已过期"); }
2. 生成唯一时间编号
JavaScriptconst id = Date.now(); console.log(id);
由于时间戳持续递增,可以作为简单的数据标识。
3. 接口请求添加时间参数
很多接口会加入时间戳防止缓存:
JavaScriptconst url = `/api/user?time=${Date.now()}`;
每次请求携带不同时间参数,可以避免浏览器缓存旧数据。
4. 记录用户行为时间
例如:
JavaScriptconst log = { action: "click", time: Date.now() }; console.log(log);
方便后续进行数据分析。
Date.now()与new Date().getTime()区别
虽然两者都可以获取当前时间戳,但存在一些细微区别。
| 方法 | 特点 |
|---|---|
| Date.now() | 代码简洁,性能更好,推荐使用 |
| new Date().getTime() | 兼容性强,可操作Date对象 |
| valueOf() | 可以转换Date对象,不够直观 |
| Number(new Date()) | 语法简单,但可读性较差 |
现代浏览器和Node.js环境中,优先推荐:
JavaScriptDate.now();
如果需要同时操作日期对象,则可以选择:
JavaScriptnew Date().getTime();
使用JS获取时间戳时的注意事项
注意时间戳单位
最常见的问题是秒和毫秒混用。
错误示例:
JavaScriptconst time = Date.now(); new Date(time / 1000);
由于Date接收的是毫秒值,除以1000后会导致日期错误。
正确方式:
JavaScriptnew Date(Date.now());
注意接口数据格式
与后端交互时,需要确认接口要求:
-
10位数字通常代表秒级时间戳
-
13位数字通常代表毫秒级时间戳
例如:
JavaScript// 秒级 Math.floor(Date.now() / 1000) // 毫秒级 Date.now()
不建议手动计算时间戳
部分开发者可能尝试通过日期计算时间:
JavaScriptnew Date().getFullYear()
再自行换算时间戳,这种方式容易受到月份、闰年、时区等因素影响。
直接使用JavaScript内置方法更加可靠。
总结
JS获取当前时间戳的方法主要包括Date.now()、new Date().getTime()、valueOf()以及Number(new Date())等方式。其中,Date.now()语法最简洁,也是当前前端开发中推荐使用的方法。
实际项目中,需要根据业务需求选择毫秒级或秒级时间戳,并注意与后端系统的数据格式保持一致。熟练掌握JavaScript时间戳处理方法,可以有效提升日期计算、接口通信以及数据管理能力。