![用 bash 算出距离某个时间还剩多少秒?](https://linux22.com/image/143222/%E7%94%A8%20bash%20%E7%AE%97%E5%87%BA%E8%B7%9D%E7%A6%BB%E6%9F%90%E4%B8%AA%E6%97%B6%E9%97%B4%E8%BF%98%E5%89%A9%E5%A4%9A%E5%B0%91%E7%A7%92%EF%BC%9F.png)
我正在考虑从“日期”命令中提取时间,减法未来的某个时间,获取“日期”到达该时间之前剩余的秒数,然后将该数字除以 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