我正在考虑从“日期”命令中提取时间,减法未来的某个时间,获取“日期”到达该时间之前剩余的秒数,然后将该数字除以 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