SBTI人格测试:超越MBTI的15维度性格分析工具
12分钟
时间戳(Timestamp)是开发中最常见的时间表示方式之一。"1714521600 是什么时间?"这种问题是开发者查日志时的日常。本文带你彻底弄清 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 响应时需要快速解读时间戳,可以使用我们的 时间戳转换工具,支持实时显示当前时间戳,以及秒级/毫秒级与北京时间的双向转换。
woshiit 技术团队
woshiit AI 导航 · 原创内容
12分钟
8 分钟
7 分钟
8 分钟