BSD系です。dateには様々なオプションがありますが、スクリプトを書く上で必要そうなものをまとめます。
出力をコントロールする
通常dateコマンドは現在日時をロングフォーマットで出力します。言語はロケールによって変わります。日本語だと結構 ダサい 間延びしてますね。
$ date
2017年 7月 5日 水曜日 07時21分39秒 JST
よくあるunix的な表示にするには。。。
date "+%Y-%m-%dT%H:%M:%S%z"
2017-07-05T07:22:06+0900
2038年問題でおなじみのunix時間(1970年1月1日0時0分0秒からの経過秒数)を表示するには。。。
date "+%s"
1499206941
このように、出力したいフォーマットを”+と”で囲んで指定します。
任意の日時を表示する
unix時間のデータが与えられていて、それが実際いつなのか?知りたいことがよくあると思います。ない?
本来は日時を設定するオプション-fを利用すればそれが可能になります。実際にはシステムの時計が狂ってしまうので、-jオプションを併用しますが。
date -jf "%s" 1499142085
Wed Jul 5 07:22:21 JST 2017
先ほどと違って、dateに入力するデータのフォーマット指定は+不要の”だけで囲んで指定します。
さらに出力フォーマットを指定するにはこれらを組み合わせます。
date -jf "%s" 1499142085 "+%Y-%m-%dT%H:%M:%S%z"
2017-07-05T07:22:21+0900
使用可能なフォーマット指定子はウィキペディアのdate (UNIX)にまとまっています。