1830297600 是一个以秒为单位的 Unix 时间戳,它代表 2028-01-01T00:00:00Z

同一瞬间的毫秒形式

JavaScript Date 要的是毫秒,所以等价的值是 1830297600000

const seconds = 1830297600;
const date = new Date(seconds * 1000);

console.log(date.toISOString());
// 2028-01-01T00:00:00.000Z

单位弄错时的典型结果

1830297600 直接传给 new Date(),它会被当成毫秒,于是得到 1970-01-22T04:24:57.600Z。这个日期不是什么解析玄学,就是秒和毫秒弄混了。

在区间查询里用它

单个时间戳很适合拿来当测试夹具或已知事件的参照点。要查一段日期区间,请在目标时区里算出起点和下一个边界,然后用左闭右开的比较:大于等于起点,小于下一个起点。

Frequent questions:

Q: Unix 时间戳 1830297600 是哪一天?
A: 1830297600 作为 Unix 秒对应 2028-01-01T00:00:00.000Z,也就是 2028 年 1 月 1 日(星期六)00:00:00 UTC。
Q: 1830297600 换成毫秒是多少?
A: 1830297600000 毫秒表示的是同一瞬间——这正是 JavaScript Date 和 Java Instant 所需要的形式。
Q: 为什么 new Date(1830297600) 显示的是 1970 年?
A: 因为 JavaScript Date 接收的是毫秒。这个秒值被当成毫秒之后,就落到了 1970 年初。请改用 new Date(1830297600 * 1000)。
Q: 在 shell 里怎么转换 1830297600?
A: Linux 用 date -u -d @1830297600,macOS 用 date -u -r 1830297600。两条命令都会返回 UTC 日期。