在Linux系统中比较两个时间的大小,首先需要将对比大小的两个时间分别转换成时间戳;(转换成时间戳,然后对比时间大小,实现起来会更加简单)
1、时间换成时间戳
a、直接输出当前时间戳:date +%s
b、转成时间戳:date -d "你的时间" +%s
[root@localhost ~]# #输出当前时间戳
[root@localhost ~]#
[root@ycqtest ~]# date +%s
1681795252
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# #输出 2023年4月19日 14点的时间戳的多种写法
[root@localhost ~]#
[root@localhost ~]# date -d "2023-04-19 14:00" +%s
1681884000
[root@localhost ~]#
[root@localhost ~]# date -d "20230419 14:00" +%s
1681884000
[root@localhost ~]#
[root@localhost ~]# date -d "2023-04-19 14:00:00" +%s
1681884000
[root@localhost ~]#
[root@localhost ~]# date -d "20230419 14" +%s
1681884000
[root@localhost ~]#
[root@localhost ~]# date -d "2023-04-19 14" +%s
1681884000
[root@localhost ~]#
2、将时间戳转换成日期时间
[root@localhost ~]#
[root@localhost ~]# #将日期 2023年4月19日 14点转换成时间戳
[root@localhost ~]#
[root@localhost ~]# date -d "2023-04-19 14:00" +%s
1681884000
[root@localhost ~]#
[root@localhost ~]# #将时间戳转换成日期和时间
[root@localhost ~]#
[root@localhost ~]# date -d @1681884000
2023年 04月 19日 星期三 14:00:00 CST
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# # 将时间戳转换成指定日期格式
[root@localhost ~]#
[root@localhost ~]# date -d @1681884000 +"%Y-%m-%d %H:%M:%S"
2023-04-19 14:00:00
[root@localhost ~]#
[root@localhost ~]# date -d @1681884000 +"%F %T"
2023-04-19 14:00:00
[root@localhost ~]#
3、对比时间戳:
#!/bin/bash
# 这里举一个简单的例子来说明下,将两个时间转换成时间戳的实现逻辑和方法:
# 假如你的第一个时间为: 2023-04-19 14:00
# 假如你的第二个时间为: 2023-04-19 16:00
time1="2023-04-29 14:00"
time2="2023-04-19 16:00"
# time1 和 time2 的时间戳分别是: Time1 和 Time2
Time1=$(date -d "$time1" +%s)
Time2=$(date -d "$time2" +%s)
# 判断只是简单的例子,随便写的,然后按照这个逻辑写,来比较就好了
if [ $Time1 -gt $Time2 ];then
echo " time1 > time2"
else
echo "time1 < time2"
fi
if [[ $(($Time1 - $Time2)) -ge 3600 ]]; then
echo "time1 比 time2 大于 1 小时"
else
echo "time1 比 time2 不大于 1 小时"
fi
echo "time1是:" $time1
echo "time2是:" $time2