Edited at

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


--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 が使えない場合

フォーマットを指定する。

$ 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