[jq] ISO 8601 の日時と Unix タイムスタンプを相互変換する
作成日: 2026年10月26日
jq の fromdateiso8601 と todateiso8601 を使用すると、ISO 8601 形式の日時文字列と秒単位の Unix タイムスタンプを相互に変換できます。
日時文字列を Unix タイムスタンプに変換する
fromdateiso8601 を使用すると、UTC の日時文字列を Unix タイムスタンプに変換できます。
printf '%s\n' '"2024-01-01T00:00:00Z"' | jq 'fromdateiso8601'
実行結果は下記のとおりです。
1704067200
この例では、YYYY-MM-DDTHH:MM:SSZ 形式の文字列を渡しています。末尾の Z は UTC を表します。fromdateiso8601 に渡す日時は、この形式で用意します。
Unix タイムスタンプを日時文字列に変換する
todateiso8601 を使用すると、Unix タイムスタンプを UTC の日時文字列に変換できます。
printf '%s\n' '1704067200' | jq 'todateiso8601'
実行結果は下記のとおりです。
"2024-01-01T00:00:00Z"
入力するタイムスタンプの単位は秒です。ミリ秒単位の値を扱う場合は、単位を秒に合わせる必要があります。