在 Ubuntu(以及大多数 Linux 系统)中,时间戳(timestamp)通常指的是 Unix 时间戳:从 1970-01-01 00:00:00 UTC 到当前时间所经过的秒数。
下面按常见场景给你总结几种计算方法。
date 命令(最常用)date +%s
示例输出:
1719300000
date 显示纳秒级时间戳date +%s%N
示例:
1719300000123456789
如果你只想要秒级:
date +%s
date -ddate -d "2025-01-01 00:00:00" +%s
输出:
1735660800
支持多种格式:
date -d "Jan 1 2025" +%s
date -d "2025/01/01 12:00:00" +%s
TZ=UTC date -d "2025-01-01 00:00:00" +%s
date -d @时间戳date -d @1719300000
输出:
Mon Jun 24 00:00:00 CST 2025
date -d @1719300000 "+%Y-%m-%d %H:%M:%S"
输出:
2025-06-24 00:00:00
| 单位 | 命令 |
|---|---|
| 秒 | date +%s |
| 毫秒 | date +%s%3N |
| 微秒 | date +%s%6N |
| 纳秒 | date +%s%9N |
⚠️ 注意:
%N 需要 date (GNU coreutils) 支持(Ubuntu 默认支持)date 不支持 %Nstart=$(date +%s)
sleep 2
end=$(date +%s)
echo "耗时: $((end - start)) 秒"
如果你在 Ubuntu 上用 Python:
python3 -c "import time; print(int(time.time()))"
指定时间:
python3 -c "from datetime import datetime; print(int(datetime(2025,1,1).timestamp()))"
❌ 时间戳 不包含时区信息
✅ 时间戳本质是 UTC 秒数
date +%s
TZ=Asia/Shanghai date +%s
TZ=UTC date +%s
上面结果 一样
如果你有具体需求(比如:日志时间转时间戳、文件名中的时间、毫秒级、C/C++ 程序里使用),可以直接告诉我,我给你针对示例。