在 CentOS(Linux) 中计算时间差的时间戳(秒/毫秒/微秒),常见做法如下,按使用场景给你总结。
date 计算两个时间的时间差(最常用)t1=$(date -d "2025-01-01 08:00:00" +%s)
t2=$(date -d "2025-01-01 10:30:00" +%s)
echo $((t2 - t1))
✅ 输出:
9000
%s表示 Unix 时间戳(秒)
t1=$(date -d "2025-01-01 08:00:00" +%s)
t2=$(date +%s)
echo $((t2 - t1))
date +%s%3N(毫秒)⚠️ 需要较新版本的 coreutils(CentOS 7+ 一般支持)
t1=$(date +%s%3N)
sleep 1.2
t2=$(date +%s%3N)
echo $((t2 - t1))
✅ 输出类似:
1200
date +%s%6N(微秒)t1=$(date +%s%6N)
sleep 0.5
t2=$(date +%s%6N)
echo $((t2 - t1))
start=$(date +%s)
# 执行命令
sleep 3
end=$(date +%s)
diff=$((end - start))
echo "耗时: ${diff} 秒"
expr(老系统兼容)t1=$(date -d "2025-01-01 08:00:00" +%s)
t2=$(date -d "2025-01-01 09:00:00" +%s)
expr $t2 - $t1
awk 计算时间差(适合日志)echo "2025-01-01 08:00:00 2025-01-01 10:30:00" | \
awk '{
cmd="date -d \""$1" "$2"\" +%s"; cmd | getline t1; close(cmd)
cmd="date -d \""$3" "$4"\" +%s"; cmd | getline t2; close(cmd)
print t2-t1
}'
| 格式 | 含义 |
|---|---|
%s |
秒 |
%s%3N |
毫秒 |
%s%6N |
微秒 |
%Y-%m-%d %H:%M:%S |
标准时间 |
✅ CentOS 7 / 8 / Stream 都支持 date -d
❌ CentOS 6 不支持 %N,毫秒/微秒不可用
✅ 建议 CentOS 7+ 使用
如果你有具体场景(如:日志时间差、程序运行时间、cron 时间差、纳秒级),可以告诉我,我可以给你更精确的方案。