linux の date コマンドで ISO 8601 形式の日付を出力
linux の date コマンドで ISO 8601 形式の日付を出力

linux の date コマンドで ISO 8601 形式の日付を出力

タグ
🔧 テックlinuxcommand linedateISO8601
投稿日
May 17, 2019
著者
💩 うんち

--iso-8601 が使える場合

※ 基本形式と拡張形式が混ざってしまっており、タイムゾーン指定子が +0000 とのように : がないので注意が必要です。

$ date --iso-8601
# => 2019-05-17

$ date --iso-8601="date"
# => 2019-05-17

$ date --iso-8601="hours"
# => 2019-05-17T06+0000

$ date --iso-8601="minutes"
# => 2019-05-17T06:49+0000

$ date --iso-8601="seconds"
# => 2019-05-17T06:49:53+0000

$ date --iso-8601="ns"
# => 2019-05-17T06:49:53,363131200+0000

--iso-8601 が使えない場合

フォーマットを指定すれば可能です。スクリプトに埋め込む場合などは --iso-8601 が使える場合でも環境依存のないこちらの方法が良いかもしれませんね。

$ date '+%Y-%m-%d'
# => 2019-05-17

$ date '+%Y-%m-%dT%H%z'
# => 2019-05-17T06+0000

$ date '+%Y-%m-%dT%H:%M%z'
# => 2019-05-17T06:49+0000

$ date '+%Y-%m-%dT%H:%M:%S%z'
# => 2019-05-17T06:49:53+0000

$ date '+%Y-%m-%dT%H:%M:%S,%N%z'
# => 2019-05-17T06:49:53,363131200+0000

タイムゾーン指定子を +00:00 のように : ありの形式にしたい場合は %z ではなく %:z をつかう必要があります。

$ date '+%Y-%m-%dT%H:%M:%S,%N%:z'
# => 2019-05-17T07:03:21,023121700+00:00