Unix 时间戳代码片段

可直接使用的代码,用于在 9 种编程语言和数据库中处理 Unix 时间戳。涵盖获取当前时间戳、转换为日期以及格式化输出。

关于这些代码示例

所有示例都用 1700000000 作为秒级 Unix 时间戳样例,对应 2023 年 11 月 15 日 06:13:20 UTC。请替换为你自己的时间戳。展示毫秒的示例使用 1700000000000(同一时刻 × 1000)。

各语言的秒与毫秒

最常见的错误是混淆秒与毫秒。请使用此速查表:

  • 毫秒(× 1000):JavaScript Date.now()、Java System.currentTimeMillis()、C# DateTimeOffset.UtcNow.ToUnixTimeMilliseconds()
  • 秒(与 JS 比较需 ÷ 1000):Python time.time()、PHP time()、Go time.Now().Unix()、Ruby Time.now.to_i、Rust SystemTime::now().as_secs()
  • SQL:MySQL UNIX_TIMESTAMP() → 秒;PostgreSQL EXTRACT(EPOCH) → 带小数部分的秒

如何安全地使用这些片段

每个片段都刻意保持短小,便于复制到控制台、迁移脚本、测试或 API 处理函数中。在生产环境使用某个值前,请在时间戳离开你代码的边界处确认其预期单位。许多 bug 都发生在一个服务发送毫秒、而另一个服务未转换就以秒存储时。

  • 对于浏览器和前端代码,除非 API 文档另有说明,否则预期为毫秒
  • 对于后端代码、日志和 shell 工具,通常默认是 Unix 秒
  • 对于数据库过滤,请在所有行和索引中保持单位一致
  • 对于格式化输出,优先使用 UTC 或显式的 IANA 时区,而非服务器默认值

选择单一可信来源

当多个服务都涉及同一事件时间时,选定一种表示作为可信来源(source of truth),并在边界处转换。例如后端可存储 Unix 秒,前端可乘以 1000 用于 Date,报表则把同一时刻格式化为 UTC 或业务时区。