用 bash 算出距离某个时间还剩多少秒?

用 bash 算出距离某个时间还剩多少秒?

我正在考虑从“日期”命令中提取时间,减法未来的某个时间,获取“日期”到达该时间之前剩余的秒数,然后将该数字除以 60 表示分钟,除以 60 表示小时。

例如,我想使用它作为“shutdown”命令的参数。

我该怎么做呢?

答案1

像这样的东西吗?

echo $(( $(date +%s -d "tomorrow 12:00") - $( date +%s ) ))
59856

答案2

可以直接在 bash 中转换为时间字符串(小于 24 小时):

 $ TZ=UTC0 printf '%(%H:%M:%S)T\n' 123
 00:02:03

时间差可以通过简单的数学计算得出:

 $ now=$(printf '%(%s)T')
 $ future=$(date -d '+10 hours' '+%s')
 $ tdiff=$(( future - now ))
 $ TZ=UTC0 printf '%(%H:%M:%S)T\n' "$tdiff"
 10:00:00

要获得长达 364 天的时间,请使用以下命令:

 now=$(printf '%(%s)T')
 future=$(date -d '+10 hour' '+%s')
 tdiff=$(( future - now ))
 j=$(( $(TZ=UTC0 printf '%(%j)T' "$tdiff") - 1 ))
 TZ=UTC0 printf '%s days %(%H:%M:%S)T\n' "$j" "$tdiff"

 0 days 10:00:00

相关内容