获取javascript当前时间戳最推荐的方式是使用 date.now(),它返回自1970年1月1日00:00:00 utc以来的毫秒数,且不创建实例,性能更优;2. new date().gettime() 和 new date().valueof() 也可获取毫秒级时间戳,结果与 date.now() 一致,但 date.now() 更简洁高效;3. 若需秒级时间戳,应使用 math.floor(date.now() / 1000) 将毫秒转换为秒;4. javascript时间戳单位为毫秒,而unix时间戳单位为秒,两者需注意单位转换,避免因未乘除1000导致时间错误;5. 常见误区包括:混淆毫秒与秒单位、忽略时区影响(时间戳为utc,显示时会本地化)、依赖不可靠的客户端时间、错误解析字符串时间戳(应先转为数字)、手动处理复杂日期计算易出错;6. 对于格式化和高级操作,建议使用 date-fns 或 dayjs 等专业库,以实现灵活的日期格式化、时区处理和安全的日期加减运算,提升开发效率与代码可靠性。

JavaScript获取当前时间戳,最直接且推荐的方式是使用
Date.now()
在JavaScript里,想拿到当前的时间戳,其实有好几种途径,但最常用也最推荐的,无非是那几个:
首先,是
Date.now()
Date.now()
Date
const timestampMs = Date.now(); console.log(timestampMs); // 例如:1678886400000
其次,如果你更习惯或者代码里已经有了
Date
new Date().getTime()
Date.now()
const dateObj = new Date(); const timestampMsFromGetTime = dateObj.getTime(); console.log(timestampMsFromGetTime); // 和上面结果类似
还有一个是
new Date().valueOf()
getTime()
getTime()
valueOf()
const timestampMsFromValueOf = new Date().valueOf(); console.log(timestampMsFromValueOf); // 同样是毫秒数
如果你需要的是秒级时间戳,那也很简单,把毫秒数除以1000,再向下取整就行了:
const timestampSec = Math.floor(Date.now() / 1000); console.log(timestampSec); // 例如:1678886400
通常情况下,我建议优先使用
Date.now()
这个问题其实挺关键的,很多初学者会在这里犯迷糊。简单来说,JavaScript内置获取的时间戳,比如
Date.now()
new Date().getTime()
而我们常说的“Unix时间戳”或者“POSIX时间戳”,它的标准单位是秒(seconds)。也就是说,Unix时间戳是自1970年1月1日00:00:00 UTC以来经过的秒数。
所以,它们之间的核心区别就在于单位:
这就意味着,如果你从后端API拿到的时间戳是秒级的Unix时间戳,而你前端JS需要用
Date
new Date()
我遇到过不少次,因为没有注意这个单位差异,导致日期显示错误或者数据处理出问题的情况。比如,一个秒级时间戳
1678886400
new Date(1678886400)
new Date(1678886400 * 1000)
处理时间戳和日期在前端开发中真是个老大难的问题,我踩过的坑可不少。除了上面提到的毫秒和秒的单位混淆,还有几个点是大家经常会忽略的:
时区问题: 时间戳本身是UTC时间(协调世界时),它不包含任何时区信息。但当你把时间戳转换成
Date
toLocaleString()
date-fns-tz
dayjs
客户端时间不可靠: 用户的本地设备时间是不受控的,他们可以随意更改。这意味着,如果你完全依赖
Date.now()
字符串时间戳的解析: 有时候后端返回的时间戳是字符串形式,比如
'1678886400000'
Date
new Date('1678886400000')parseInt()
Number()
new Date(parseInt('1678886400000'))日期计算的复杂性: 比如计算两个日期之间相差多少天,或者在某个日期上增加一个月。这些操作看似简单,但涉及到月份天数不一、闰年等复杂情况时,手动计算很容易出错。这就是为什么我会强烈推荐使用成熟的日期处理库,它们已经处理了这些复杂的边缘情况。
这些“坑”往往不是代码语法错误,而是逻辑上的偏差,一旦上线就可能带来难以追踪的问题。
仅仅获取时间戳显然不够,在前端界面上,我们通常需要将这些枯燥的数字转换成用户能看懂的、友好的日期时间格式,比如“2023年3月15日 下午3:00”。同时,我们可能还需要进行各种日期操作,比如计算几天后、几小时前。
最基础的,你可以把时间戳转换成
Date
Date
const timestampMs = Date.now(); const date = new Date(timestampMs); // 基本的本地化字符串 console.log(date.toLocaleString()); // 比如 "2023/3/15 下午3:00:00" (格式取决于浏览器和地区) console.log(date.toLocaleDateString()); // 比如 "2023/3/15" console.log(date.toLocaleTimeString()); // 比如 "下午3:00:00" // 获取特定部分 console.log(date.getFullYear()); // 年 console.log(date.getMonth() + 1); // 月 (注意:0-11,所以要加1) console.log(date.getDate()); // 日 console.log(date.getHours()); // 小时 console.log(date.getMinutes()); // 分钟 console.log(date.getSeconds()); // 秒
虽然
Date
目前前端比较流行的日期库有:
date-fns
format(date, 'yyyy-MM-dd HH:mm:ss')
dayjs
Moment.js
Moment.js
Moment.js
以
date-fns
// 假设你已经安装了 date-fns
// import { format, addDays, subHours } from 'date-fns';
// 格式化
// console.log(format(new Date(), 'yyyy年MM月dd日 HH:mm:ss')); // 2023年03月15日 15:00:00
// 日期加减
// const tomorrow = addDays(new Date(), 1); // 明天
// const twoHoursAgo = subHours(new Date(), 2); // 两小时前
// console.log(format(tomorrow, 'yyyy-MM-dd'));
// console.log(format(twoHoursAgo, 'HH:mm'));选择一个合适的日期库,能够大大提升开发效率,减少因日期处理逻辑复杂而引入的bug。我个人倾向于
date-fns
dayjs
以上就是js 怎么获取当前时间戳的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号