今年もあと残りわずかですが、ふと残りの時間を計算したくなりました。
何日かはカレンダー見ればわかるので残り時間(hour)を計算しようと思います。
私の作ったツールでdateコマンドを使って何回かやってますので
今回もdateでやってみます。
パッと思いついた処理はこちら。
- 今年の残り時間を算出
- 時間に変換
- 出力
残り時間はUNIX時間からはじき出すのがスムーズだと思ったので
まずは残り秒数を出します。
%sオプションでUNIX時間がでます。
算出
2020年の元旦と今の時間を引けば残り時間(hour)ですね。
※WSL上でコマンド叩いています。
ワンライナーなので見にくくてすいません。
masashi@DESKTOP-N095TND:~$ date ; expr $(date +%s -d "20200101") - $(date +%s) Mon Dec 23 22:11:11 DST 2019 697729
計算
この残り秒数を時間に直します。
xargsで渡してやって3600で割れば時間ですね。
xargsの-Iオプションで変数を指定できます。
masashi@DESKTOP-N095TND:~$ date ; expr $(date +%s -d "20200101") - $(date +%s) | xargs -It expr t / 60 / 60 Mon Dec 23 22:11:48 DST 2019 193
出力
最後に文字列とともに出力です。
masashi@DESKTOP-N095TND:~$ date ; expr $(date +%s -d "20200101") - $(date +%s) | xargs -It expr t / 60 / 60 | xargs -Ih echo 2020年まであと h 時間 Mon Dec 23 22:12:44 DST 2019 2020年まであと 193 時間
答え合わせ
今の時間から出た答えを足せば2020年1月1日になるはずですね。
masashi@DESKTOP-N095TND:~$ date -d "193hour" Tue Dec 31 23:14:14 DST 2019
あら...exprで端数が切り捨てられているので分数が足りていませんね。
時間だけ分かればいいや
残り時間だけ分かればいいことにします。
計算結果に1時間足せば時間だけは合うはずですね。
masashi@DESKTOP-N095TND:~$ date ; expr $(date +%s -d "20200101") - $(date +%s) | xargs -It expr t / 60 / 60 + 1 | xargs -Ih echo 2020年まであと h 時間 Mon Dec 23 22:14:53 DST 2019 2020年まであと 194 時間
再度答え合わせ
masashi@DESKTOP-N095TND:~$ date -d "194hour" Wed Jan 1 00:15:15 DST 2020
元日になりました!
12/23 22:15現在であと194時間で新年です!
上には上がいる
このコマンドを思いついたのは先週なんですが、
本件をシェル芸botに流したところすぐにebanさんが残り秒まで算出されたコマンドを投稿されました。
(私が本当はやりたかったこと)
- 私の
2019年 12月 17日 火曜日 18:29:43 JST
— シェル芸bot (@minyoruminyon) December 17, 2019
2020年まであと 342 時間 https://t.co/Tlp2P4v1jo
- ebanさんの
2020年まで014日と02時間58分39秒 https://t.co/XSkI1pTwsT
— シェル芸bot (@minyoruminyon) December 17, 2019
いやー天才がいっぱいいますねえ。