← 返回博客列表
开发技巧2026-04-01 · 7 分钟 阅读

Unix 时间戳是什么?开发中如何正确使用时间戳

时间戳(Timestamp)是开发中最常见的时间表示方式之一。"1714521600 是什么时间?"这种问题是开发者查日志时的日常。本文带你彻底弄清 Unix 时间戳的概念与使用技巧。

# 时间戳# Unix# 后端开发# JavaScript

什么是 Unix 时间戳?

Unix 时间戳(Unix Timestamp),又称 POSIX 时间或 Epoch 时间,是从 1970年1月1日 00:00:00 UTC(协调世界时) 至今经过的秒数

这个起点时刻(1970-01-01 00:00:00 UTC)被称为 Unix 纪元(Unix Epoch)

例如,2026-04-01 00:00:00 UTC 对应的 Unix 时间戳大约是 1743465600,意味着从 Unix 纪元开始到这一时刻,经过了约 17 亿秒。

为什么要使用时间戳?

时间戳比人类可读的日期格式(如 "2026-04-01 08:00:00")有几个显著优势:

1. 时区无关性

时间戳表示的是绝对时刻(UTC 参考),不受时区影响。同一时刻在北京(UTC+8)、纽约(UTC-5)、伦敦(UTC+0)的时间戳完全相同,避免了跨时区计算的混乱。

2. 易于数学运算

"今天减去 7 天是哪一天?"这种问题,用时间戳计算极为简单:

``javascript

const sevenDaysAgo = Date.now() - 7 * 24 * 60 * 60 * 1000;

` 3. 存储效率高

一个 32 位整数即可表示时间戳,比字符串存储更节省空间,索引和查询性能更好。

4. 排序比较方便

时间戳是纯数字,可以直接进行大小比较,不需要日期解析。

秒级 vs 毫秒级时间戳

这是导致 Bug 的最常见混淆之一!

  • Unix 时间戳(秒):10位数字,如 1743465600
  • JavaScript 时间戳(毫秒):13位数字,如 1743465600000
不同语言的默认精度:

|----------|---------|------|

语言/平台默认精度示例
JavaScript Date.now()毫秒1743465600000
Python time.time()秒(浮点)1743465600.123
Python int(time.time())1743465600
Java System.currentTimeMillis()毫秒1743465600000
Go time.Now().Unix()1743465600
MySQL UNIX_TIMESTAMP()1743465600
PHP time()1743465600
最佳实践:在跨语言的 API 接口中,强烈建议在字段名或文档中明确标注时间戳的精度,例如
created_at_ms(毫秒)或 created_at_sec(秒)。

在 JavaScript 中操作时间戳

`javascript

// 获取当前时间的毫秒时间戳

const msTimestamp = Date.now(); // 1743465600000

const msTimestamp2 = +new Date(); // 同上

const msTimestamp3 = new Date().getTime(); // 同上

// 获取秒级时间戳

const secTimestamp = Math.floor(Date.now() / 1000); // 1743465600

// 时间戳转 Date 对象(JavaScript 使用毫秒)

const date = new Date(1743465600 * 1000); // 注意需要乘以1000

// Date 对象转格式化字符串(北京时间)

const localStr = date.toLocaleString('zh-CN', { timeZone: 'Asia/Shanghai' });

// 判断时间戳是秒级还是毫秒级

function normalizeTimestamp(ts) {

if (ts.toString().length >= 13) return ts; // 毫秒

return ts * 1000; // 秒转毫秒

}

`

2038 年问题

这是一个著名的"千年虫"兄弟问题:如果使用 32 位有符号整数存储 Unix 时间戳,其最大值为 2147483647`,对应时间是 2038年1月19日 03:14:07 UTC。超过这个时刻,32 位时间戳将发生溢出。

目前主流的解决方案是迁移到 64 位整数存储时间戳,这可以支撑到约 2920 亿年后,可以说是完全不需要担心了。大多数现代系统和数据库已经采用了 64 位时间戳。

快速转换工具

如果你在调试日志或 API 响应时需要快速解读时间戳,可以使用我们的 时间戳转换工具,支持实时显示当前时间戳,以及秒级/毫秒级与北京时间的双向转换。

W

woshiit 技术团队

woshiit AI 导航 · 原创内容

更多文章

技术分享

SBTI人格测试:超越MBTI的15维度性格分析工具

12分钟

AI 工具

女娲.skill:用AI复刻大师思维,与乔布斯、马斯克深度对话

8 分钟

技术基础

什么是 Base64 编码?原理、用途与在线转换详解

7 分钟

信息安全

MD5 是什么?详解 MD5 加密算法的原理与安全性

8 分钟