"date"コマンドから時間を抽出しようとしていますが、減算将来のある時点で、Dateがその時間に達するまでの残りの秒数を求め、その数を分は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