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