1700000000 是一个以秒为单位的 Unix 时间戳,它代表 2023-11-14T22:13:20Z。
同一瞬间的毫秒形式
JavaScript Date 要的是毫秒,所以等价的值是 1700000000000。
const seconds = 1700000000;
const date = new Date(seconds * 1000);
console.log(date.toISOString());
// 2023-11-14T22:13:20.000Z
单位弄错时的典型结果
把 1700000000 直接传给 new Date(),它会被当成毫秒,于是得到 1970-01-20T16:13:20.000Z。这个日期不是什么解析玄学,就是秒和毫秒弄混了。
在区间查询里用它
单个时间戳很适合拿来当测试夹具或已知事件的参照点。要查一段日期区间,请在目标时区里算出起点和下一个边界,然后用左闭右开的比较:大于等于起点,小于下一个起点。
Frequent questions:
- Q: Unix 时间戳 1700000000 是哪一天?
- A: 1700000000 作为 Unix 秒对应 2023-11-14T22:13:20.000Z,也就是 2023 年 11 月 14 日(星期二)22:13:20 UTC。
- Q: 1700000000 换成毫秒是多少?
- A: 1700000000000 毫秒表示的是同一瞬间——这正是 JavaScript Date 和 Java Instant 所需要的形式。
- Q: 为什么 new Date(1700000000) 显示的是 1970 年?
- A: 因为 JavaScript Date 接收的是毫秒。这个秒值被当成毫秒之后,就落到了 1970 年初。请改用 new Date(1700000000 * 1000)。
- Q: 在 shell 里怎么转换 1700000000?
- A: Linux 用 date -u -d @1700000000,macOS 用 date -u -r 1700000000。两条命令都会返回 UTC 日期。