如何在JavaScript中获取时间戳:5种方法及示例
\n\n每位开发者都曾遇到过这样的任务:需要保存一个时间点、比较日期或将数据发送到服务器。这时,JavaScript中的时间戳就派上了用场——它是一个所有系统都能理解的通用时间标记。在本指南中,我将展示5种经过验证的获取时间戳的方法,分析它们的优缺点,并回答来自Stack Overflow的热门问题。
\n\n如果你曾经搜索过"how do I get a timestamp in JavaScript"——你并不孤单。每天都有成千上万的开发者在寻找这个答案。让我们一劳永逸地搞清楚这个话题。
\n\n什么是时间戳,为什么需要它?
\n\n时间戳(Timestamp)是指自1970年1月1日00:00:00 UTC以来经过的毫秒数。这个日期被称为Unix纪元。为什么需要它?
\n\n- \n
- 通用性:时间戳不依赖于时区——它是纯粹的UTC时间。 \n
- 存储方便:一个数字代替了日期字符串。 \n
- 易于比较:可以轻松计算两个时间点之间的差值。 \n
- 兼容性:所有编程语言和数据库都能理解时间戳。 \n
现在进入最有趣的部分——如何在JavaScript中获取它。
\n\n方法1:Date.now() —— 最快且最简洁
\n\n这是我最喜欢的方法。Date.now() 返回当前时间的毫秒时间戳。没有多余的对象,没有构造函数——只是一个数字。
// 获取当前时间戳\nconst currentTimestamp = Date.now();\nconsole.log(currentTimestamp); // 1712345678901\n\n// 可以直接用于测量\nconst start = Date.now();\n// ... 一些代码 ...\nconst end = Date.now();\nconsole.log(`执行耗时 ${end - start} 毫秒`);\n\n\n优点:
\n- \n
- 最高性能(不创建对象) \n
- 代码可读性强且简短 \n
- 所有现代浏览器和Node.js都支持 \n
缺点:
\n- \n
- 只返回当前时刻(无法设置日期) \n
当你需要JavaScript中的当前时间戳且不想多费周折时,请使用Date.now()。
方法2:new Date().getTime() —— 经典方法
\n\n每个使用JavaScript超过一年的人都熟悉这个方法。创建一个Date对象并调用getTime()。
// 通过Date对象获取时间戳\nconst timestamp = new Date().getTime();\nconsole.log(timestamp); // 1712345678901\n\n// 可以获取特定日期的时间戳\nconst specificDate = new Date('2024-12-31T23:59:59');\nconst specificTimestamp = specificDate.getTime();\nconsole.log(specificTimestamp); // 1735689599000\n\n\n优点:
\n- \n
- 可以获取任意日期的时间戳 \n
- 向后兼容(在旧浏览器中也能工作) \n
- 语法直观易懂 \n
缺点:
\n- \n
- 创建了多余的对象(比Date.now()稍慢) \n
当你需要获取特定日期的JavaScript时间戳或处理不同时间点时,选择new Date().getTime()。
方法3:+new Date() —— 一元加号技巧
\n\n很少有人知道,一元加号可以将Date对象转换为数字——即它的时间戳。这是通过强制类型转换实现的。
\n\n// 简短但不直观的方法\nconst timestamp = +new Date();\nconsole.log(timestamp); // 1712345678901\n\n// 甚至可以省略括号\nconst timestamp2 = +new Date;\nconsole.log(timestamp2); // 1712345678902\n\n\n优点:
\n- \n
- 非常简短的写法