温馨提示×

centos时间戳如何对比

小樊
51
2026-07-19 09:15:21
栏目: 智能运维

在 CentOS(或其他 Linux 系统)里,“时间戳对比”通常指对比两个 Unix 时间戳(秒或毫秒)的大小/差值。下面按常见场景给你说明。


一、什么是时间戳

  • 秒级时间戳:如 1700000000
  • 毫秒级时间戳:如 1700000000000

二、获取当前时间戳

1️⃣ 秒级时间戳

date +%s

2️⃣ 毫秒级时间戳

date +%s%3N

三、直接对比两个时间戳(数值对比)

✅ 秒级时间戳对比

ts1=$(date +%s)
sleep 2
ts2=$(date +%s)

if [ "$ts2" -gt "$ts1" ]; then
    echo "ts2 更新"
fi

✅ 毫秒级时间戳对比(bash)

⚠️ Bash 只支持整数,毫秒时间戳太长可能会溢出,推荐用 awkbc

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)

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 脚本判断),可以直接贴出来,我可以给你更精确的写法。

0