JavaScript Unix 时间戳代码片段
JavaScript 示例,用于获取当前时间戳、将 Unix 秒或毫秒转换为 Date 对象,以及用浏览器内置 API 格式化输出。
Current Unix timestamp (seconds)
Math.floor(Date.now() / 1000)Current Unix timestamp (milliseconds)
Date.now()Timestamp from a Date object
new Date().getTime()
// or
+new Date()Date object from Unix timestamp (seconds)
new Date(1700000000 * 1000)ISO 8601 string from timestamp
new Date(1700000000 * 1000).toISOString()
// → "2023-11-15T06:13:20.000Z"Formatted local string
new Date(1700000000 * 1000).toLocaleString()
new Date(1700000000 * 1000).toLocaleString("en-US", { timeZone: "America/New_York" })JavaScript 时间戳基础
JavaScript Date 将时间存储为自 Unix 纪元以来的毫秒数。需要毫秒时用 Date.now(),当 API 期望 Unix 秒时用 Math.floor(Date.now() / 1000)。
常见的 JavaScript 转换
将以秒为单位的 Unix 时间戳转换为 Date 时,先乘以 1000 再调用 new Date()。UTC 输出用 toISOString(),HTTP 风格输出用 toUTCString(),需要特定时区时用 Intl.DateTimeFormat。
JavaScript 生产注意事项
JavaScript 时间戳的 bug 通常来自把 Date 的毫秒和 API 的秒混在一起。把 Date 对象保留在 UI 边缘,只有在单位明确后才通过 API 传递纯数字或 ISO 字符串。显示本地时间时,使用带命名时区的 Intl.DateTimeFormat,使结果在浏览器和服务器之间可复现。
- 当你需要用于计时器、分析事件或浏览器存储的纪元毫秒时,使用 Date.now()
- 当后端端点期望 Unix 秒时,使用 Math.floor(Date.now() / 1000)
- 当 API 发送秒时,使用 new Date(seconds * 1000)
- 对于可通过 JSON 往返的 UTC 字符串,使用 toISOString()
相关 JavaScript 参考
FAQ
- Date.now() 返回 Unix 秒吗?
- 不。Date.now() 返回毫秒。当 API、数据库或命令行工具期望 Unix 秒时,除以 1000 并向下取整。
- 应该把 Date 对象存进 JSON 吗?
- 不。先把值转换为数字或 ISO 8601 字符串。JSON 没有原生 Date 类型,所以显式值更便于调试和比较。