在 CentOS(或其他 Linux 系统)里,“时间戳对比”通常指对比两个 Unix 时间戳(秒或毫秒)的大小/差值。下面按常见场景给你说明。
17000000001700000000000date +%s
date +%s%3N
ts1=$(date +%s)
sleep 2
ts2=$(date +%s)
if [ "$ts2" -gt "$ts1" ]; then
echo "ts2 更新"
fi
⚠️ Bash 只支持整数,毫秒时间戳太长可能会溢出,推荐用 awk 或 bc
ts1=$(date +%s%3N)
sleep 1
ts2=$(date +%s%3N)
awk -v a="$ts1" -v b="$ts2" 'BEGIN { if (b>a) print "ts2 更大" }'
t1="2026-01-21 10:00:00"
t2="2026-01-21 12:00:00"
s1=$(date -d "$t1" +%s)
s2=$(date -d "$t2" +%s)
if [ "$s2" -gt "$s1" ]; then
echo "t2 更新"
fi
diff=$((ts2 - ts1))
echo "相差 $diff 秒"
echo $((diff / 86400)) 天
echo $((diff / 3600)) 小时
awk -v a="$ts1" -v b="$ts2" 'BEGIN { print (b-a)/1000 " 秒" }'
| 问题 | 说明 |
|---|---|
| 毫秒时间戳比较 | 不建议直接用 bash,用 awk |
| date -d | CentOS 7/8 支持,CentOS 6 不支持 |
| 时间格式 | 必须是 YYYY-MM-DD HH:MM:SS |
| 时区 | 默认使用系统时区 |
now=$(date +%s)
expire=1700000000
if [ "$now" -gt "$expire" ]; then
echo "已过期"
else
echo "未过期"
fi
如果你有具体场景(比如:日志时间对比、程序里的时间戳、数据库时间、shell 脚本判断),可以直接贴出来,我可以给你更精确的写法。