日付を計算したり、日付の書式を変換するコマンドを作りました。
書くこと
- なにができる?
- 使い方
- インストール
- 動機
- まとめ
なにができる?
- 日付の加算と減算
- 日付の書式を変換
これだけをしてくれるコマンドです。
使い方
システム時刻の1年3ヶ月20秒後を求める
$ date "+%Y/%m/%d %H:%M:%S" 2018/05/12 17:30:00 $ dt now +1Y +3M +20s 2019/08/12 17:30:20
計算元の日付を指定
$ dt "2018/05/12 17:30:00" +1Y +3M +20s 2019/08/12 17:30:20
日付の加算
$ dt "2018/05/12 17:30:00" +1Y 2019/05/12 17:30:00 $ dt "2018/05/12 17:30:00" +1M 2018/06/12 17:30:00 $ dt "2018/05/12 17:30:00" +1D 2018/05/13 17:30:00 $ dt "2018/05/12 17:30:00" +1h 2018/05/12 18:30:00 $ dt "2018/05/12 17:30:00" +1m 2018/05/12 17:31:00 $ dt "2018/05/12 17:30:00" +1s 2018/05/12 17:30:01 # '+' は省略可能 $ dt "2018/05/12 17:30:00" 1Y 3M 20s 2019/08/12 17:30:20
日付の減算
$ dt "2018/05/12 17:30:00" -1Y -3M -20s 2017/02/12 17:29:40
入力フォーマット
# コマンド標準 $ dt "2018/05/12 17:30:00" +1Y +3M +20s 2019/08/12 17:30:20 # RFC822 $ dt -o def "12 May 18 17:30 MST" +1Y +3M +20s 2019/08/12 17:30:20 $ dt -o def 1526113800 +1Y +3M +20s 2019/08/12 17:30:20# unix 秒
自動判断されるフォーマット
入力フォーマットを指定
# unix ミリ秒 $ dt -i unixm -o def 1526113800000 +1Y +3M +20s 2019/08/12 17:30:20 # カスタムフォーマット $ dt -i "02-Jan-06 15:04:05" -o def "12-May-18 17:30:00" +1Y +3M +20s 2019/08/12 17:30:20
出力フォーマット
デフォルトは入力フォーマットと同じ。
$ dt "2018-05-12 17:30:00" +1Y +3M +20s 2019-08-12 17:30:20 $ dt 1526113800 +1Y +3M +20s 15300622820
出力フォーマットを指定
$ dt -o def 1526113800 +1Y +3M +20s 2019/08/12 17:30:20 $ dt -o "02-Jan-06 15:04:05" 1526113800 +1Y +3M +20s 12-Aug-19 17:30:20
ヘルプ
$ dt --help # ...
インストール
Homebrew
$ brew tap ebc-2in2crc/dt $ brew install dt
Developer
$ go get -u github.com/ebc-2in2crc/dt/...
手動
https://github.com/ebc-2in2crc/dt/releases からダウンロードした zip ファイルを展開した中にあるファイルを、パスの通ったディレクトリに入れる。
動機
DB に格納されている日付が unix 秒だったり、それに対する加減算をしたり、入力と出力で日付のフォーマットが異なっていたりするのが面倒くさくて作りました。date コマンドでも同じことはできなくもありませんが……
実装言語が Go なのは、以前チュートリアルをやったきり触っておらず文法そのほかすべてをきれいに忘れてしまったので、再入門するつもりで選びました。
まとめ
バグとかあると思いますし、「おそいよ!」とか「こーしたら使いやすくなる」とかあったら、イシュー作ったり声かけてもらえると嬉しいです。
ということで dt コマンド の紹介でした。