JS获取当前时间戳的方法

2026-09-03 20:15:56 4 次阅读

JavaScript开发过程中,时间处理是非常常见的需求,例如记录用户操作时间、生成唯一标识、计算程序执行耗时、处理接口请求时间等。其中,时间戳是一种非常重要的时间表示方式。掌握JS获取当前时间戳的方法,可以帮助开发者更加灵活地处理日期和时间数据。

时间戳通常指从1970年1月1日00:00:00(UTC时间)开始计算,到当前时间经过的总毫秒数。在JavaScript中,获取当前时间戳有多种方式,不同场景下可以选择不同的实现方法。

使用Date.now()获取当前时间戳

Date.now()是JavaScript中最推荐的获取当前时间戳的方法,它可以直接返回当前时间距离1970年1月1日00:00:00 UTC的毫秒数。

示例代码:

JavaScript
const timestamp = Date.now();

console.log(timestamp);

输出结果类似:

1787452800000

返回值是一个整数,单位为毫秒。

这种方式代码简洁,执行效率较高,也是现代JavaScript开发中最常用的方法。

适用场景:

  • 记录当前操作时间

  • 生成临时编号

  • 计算时间差

  • 请求接口添加时间参数

  • 判断缓存是否过期

例如计算代码执行时间:

JavaScript
const 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()方法获取当前时间戳。

示例:

JavaScript
const timestamp = new Date().getTime();

console.log(timestamp);

执行结果与Date.now()相同。

原理:

JavaScript
new Date()

会创建当前时间对象,而:

JavaScript
getTime()

会返回该日期对应的时间戳。

这种写法兼容性较好,在早期JavaScript项目中非常常见。

使用valueOf()方法获取时间戳

JavaScript中的Date对象可以通过valueOf()方法转换为数字类型,该数字就是对应的时间戳。

示例:

JavaScript
const timestamp = new Date().valueOf();

console.log(timestamp);

返回:

1787452800000

实际上:

JavaScript
new Date().valueOf()

与:

JavaScript
new Date().getTime()

效果基本一致。

不过在代码可读性方面,getTime()表达更加明确,因此实际开发中更推荐使用getTime()

使用Number转换Date对象获取时间戳

JavaScript允许通过Number函数将Date对象转换为数字:

JavaScript
const timestamp = Number(new Date());

console.log(timestamp);

执行后同样会得到当前时间戳。

原因是Date对象在进行数字转换时,会自动调用内部的valueOf()方法。

虽然这种方式可以实现目标,但代码含义不够直观,因此一般不作为首选方案。

获取秒级时间戳的方法

JavaScript默认获取的是毫秒级时间戳,而很多后端系统(例如PHP、Java、Python等)使用的是秒级时间戳。

如果需要获取秒级时间戳,可以将毫秒时间戳除以1000:

JavaScript
const timestamp = Math.floor(Date.now() / 1000);

console.log(timestamp);

示例输出:

1787452800

区别如下:

类型单位示例
毫秒时间戳ms1787452800000
秒时间戳s1787452800

在开发接口参数时,需要根据后端要求选择正确的时间戳格式,否则可能导致时间解析错误。

将时间戳转换为日期时间

获取时间戳后,经常需要将它转换为正常日期格式。

例如:

JavaScript
const timestamp = Date.now();

const date = new Date(timestamp);

console.log(date);

输出:

Sun Aug 23 2026 13:00:00 GMT+0800

如果需要格式化日期,可以自定义处理:

JavaScript
function 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标准,因此不受本地时区影响。

例如:

JavaScript
console.log(Date.now());

无论用户位于中国、日本还是美国,得到的时间戳表示的是同一个绝对时间点。

这也是时间戳适合进行跨地区数据存储的重要原因。

JS时间戳常见应用场景

1. 判断数据是否过期

例如缓存有效期判断:

JavaScript
const expireTime = 1735689600000;

if (Date.now() > expireTime) {
    console.log("数据已过期");
}

2. 生成唯一时间编号

JavaScript
const id = Date.now();

console.log(id);

由于时间戳持续递增,可以作为简单的数据标识。

3. 接口请求添加时间参数

很多接口会加入时间戳防止缓存:

JavaScript
const url = `/api/user?time=${Date.now()}`;

每次请求携带不同时间参数,可以避免浏览器缓存旧数据。

4. 记录用户行为时间

例如:

JavaScript
const 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环境中,优先推荐:

JavaScript
Date.now();

如果需要同时操作日期对象,则可以选择:

JavaScript
new Date().getTime();

使用JS获取时间戳时的注意事项

注意时间戳单位

最常见的问题是秒和毫秒混用。

错误示例:

JavaScript
const time = Date.now();

new Date(time / 1000);

由于Date接收的是毫秒值,除以1000后会导致日期错误。

正确方式:

JavaScript
new Date(Date.now());

注意接口数据格式

与后端交互时,需要确认接口要求:

  • 10位数字通常代表秒级时间戳

  • 13位数字通常代表毫秒级时间戳

例如:

JavaScript
// 秒级
Math.floor(Date.now() / 1000)

// 毫秒级
Date.now()

不建议手动计算时间戳

部分开发者可能尝试通过日期计算时间:

JavaScript
new Date().getFullYear()

再自行换算时间戳,这种方式容易受到月份、闰年、时区等因素影响。

直接使用JavaScript内置方法更加可靠。

总结

JS获取当前时间戳的方法主要包括Date.now()new Date().getTime()valueOf()以及Number(new Date())等方式。其中,Date.now()语法最简洁,也是当前前端开发中推荐使用的方法。

实际项目中,需要根据业务需求选择毫秒级或秒级时间戳,并注意与后端系统的数据格式保持一致。熟练掌握JavaScript时间戳处理方法,可以有效提升日期计算、接口通信以及数据管理能力。