如何找到时间X大于或等于其他时间Y和Z

如何找到时间X大于或等于其他时间Y和Z

让我们有3次

time1=11:34:45

time2:12:39:32

target_time:12:45:48

那么如何找到目标时间大于等于time1或者time2呢?

所需输出:

the target time 12:45:48 is greater or equal to 12:39:32

答案1

您可以首先将时间转换为更容易比较的通用格式,例如以秒为单位。

这可以在 bash 函数中像这样完成:

time_to_seconds() {
    IFS=: read -r hours minutes seconds <<< "$1"
    echo $(( hours * 3600 + minutes * 60 + seconds ))
}

IFS=:告诉 bash 用冒号分隔字符串,以便可以使用 读取小时、分钟和秒read

之后,您可以将时间变量转换为秒,如下所示:

time1_secs=$(time_to_seconds "$time1")
time2_secs=$(time_to_seconds "$time2")
target_time_secs=$(time_to_seconds "$target_time")

那么这只是做事的问题比较, 像这样:

if [ $target_time_secs -ge $time2_secs ]; then
    echo "the target time $target_time is greater or equal to $time2"
fi

相关内容