下面这些 JavaScript 示例以 Unix 秒作为通用基准,只有在运行时天然提供毫秒的地方才展示毫秒。复制之前先回答一个简单的问题:下游那个 API 要的是什么单位?
获取当前 Unix 时间
const milliseconds = Date.now();
const seconds = Math.floor(milliseconds / 1000);
把时间戳转成 UTC
const date = new Date(1700000000 * 1000);
console.log(date.toISOString());
上生产前留意
Date 接收的是毫秒,不是 Unix 秒。一个 10 位的 Unix 值必须先乘以 1000,才能正确地变成 Date。
值跨越系统边界时,把单位写进字段名里:createdAtSeconds 和 createdAtMs 是比 createdAt 长了点,但出事故的时候能省下不少猜测。
Frequent questions:
- Q: Date.now() 返回的是 Unix 秒吗?
- A: 不是,它返回毫秒。当接口、数据库或命令行工具要的是 Unix 秒时,除以 1000 并向下取整。
- Q: 可以把 Date 对象直接放进 JSON 吗?
- A: 不建议。先转成数字或 ISO 8601 字符串。JSON 没有原生的 Date 类型,显式的值更好调试也更好比较。