Unix 时间戳(POSIX 时间)是从 UTC 1970-01-01 00:00:00 起到某一时刻的经过时间,不随时区变化,是数据库存储、日志、API 里表示时间的通用方式。
| 单位 | 位数(当前) | 常见于 |
|---|---|---|
| 秒 (s) | 10 位 | 传统 Unix、PHP time()、Python int(time.time()) |
| 毫秒 (ms) | 13 位 | JavaScript Date.now()、Java System.currentTimeMillis() |
| 微秒 (µs) | 16 位 | 部分数据库、Python time.time_ns()//1000 |
| 纳秒 (ns) | 19 位 | Go UnixNano()、clock_gettime |
2025-12-24T14:00:00Z)、2025-12-24 14:00:00、2025/12/24、RFC(Sat, 24 Dec 2025 06:00:00 GMT)等。原值 / ISO / Unix 秒 / 相对 表格,可复制为 TSV 贴进表格软件。全部在本地浏览器完成,不上传、不记录。
| 语言 | 秒 (10 位) | 毫秒 (13 位) |
|---|---|---|
| JavaScript | Math.floor(Date.now()/1000) |
Date.now() |
| Python | int(time.time()) |
int(time.time()*1000) |
| Java | System.currentTimeMillis()/1000L |
System.currentTimeMillis() |
| Go | time.Now().Unix() |
time.Now().UnixMilli() |
| Rust | SystemTime::now().duration_since(UNIX_EPOCH)?.as_secs() |
...as_millis() |
| Kotlin | Instant.now().epochSecond |
Instant.now().toEpochMilli() |
| Swift | Int(Date().timeIntervalSince1970) |
Int(Date().timeIntervalSince1970 * 1000) |
| Ruby | Time.now.to_i |
(Time.now.to_f * 1000).to_i |
| Dart | DateTime.now().millisecondsSinceEpoch ~/ 1000 |
DateTime.now().millisecondsSinceEpoch |
| C# | DateTimeOffset.UtcNow.ToUnixTimeSeconds() |
...ToUnixTimeMilliseconds() |
| PHP | time() |
(int)(microtime(true)*1000) |
| Bash | date +%s |
date +%s%3N |
| PowerShell | [DateTimeOffset]::UtcNow.ToUnixTimeSeconds() |
[DateTimeOffset]::UtcNow.ToUnixTimeMilliseconds() |
| MySQL | UNIX_TIMESTAMP(NOW()) |
ROUND(UNIX_TIMESTAMP(NOW(3))*1000) |
| PostgreSQL | EXTRACT(EPOCH FROM now())::bigint |
(EXTRACT(EPOCH FROM clock_timestamp())*1000)::bigint |
| SQL Server | DATEDIFF(SECOND,'1970-01-01',GETUTCDATE()) |
DATEDIFF_BIG(MILLISECOND,'1970-01-01',SYSUTCDATETIME()) |
| Excel(东八区) | =(NOW()-DATE(1970,1,1)-8/24)*86400 |
=(NOW()-DATE(1970,1,1)-8/24)*86400000 |
工具里的下拉框还有 C、C++、Perl、R、SQLite 等写法,表里只列了常用的一部分。
Q:工具怎么知道我输的是 10 位还是 13 位?
A:按数值量级判断——小于约 1e11 当秒,1e11–1e14 当毫秒,再往上是微秒 / 纳秒。也可以在输入框右边手动选「按秒 / 按毫秒 / …」强制。
Q:本机时间和 UTC 为什么差 8 小时? A:时间戳本身是全球统一的(基于 UTC),显示时按时区加偏移。中国大陆是 UTC+8,所以本机显示比 UTC 早 8 小时;用「指定时区」可以看别的地方。
Q:能转 1970 年之前的时间吗?
A:能。输入负数时间戳即可,例如 -86400 是 1969-12-31 00:00:00 UTC。
Q:ISO 8601 和 RFC 1123 有什么区别?
A:ISO 是 2025-12-24T06:00:00.000Z,程序、API、数据库都爱用;RFC 1123 是 Wed, 24 Dec 2025 06:00:00 GMT,HTTP 头(如 Date、Expires)里的格式。
Q:时间戳受闰秒影响吗? A:不受。Unix 时间戳假定每天恰好 86400 秒,不表示闰秒。极高精度授时场景需另行处理,普通互联网应用可忽略。