[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"

入力するタイムスタンプの単位は秒です。ミリ秒単位の値を扱う場合は、単位を秒に合わせる必要があります。

参考

jq