TZ環境変数とは
dateコマンドはシステムに設定されたタイムゾーンで日時を表示する。
システム全体のタイムゾーンを変更せずに、コマンド実行時だけ別のタイムゾーンで日時を確認したい場合はTZ環境変数を使用する。
コマンド実行時だけタイムゾーンを変更する
コマンドの前にTZ=タイムゾーンを付けると、そのコマンドの実行時だけタイムゾーンを変更できる。
$ date
Sun Jul 12 10:55:30 UTC 2026
$ TZ="Asia/Tokyo" date
Sun Jul 12 19:55:30 JST 2026
$ TZ="America/New_York" date
Sun Jul 12 06:55:30 EDT 2026
システムのタイムゾーン設定自体は変更されないため、TZを付けずに実行すると元のタイムゾーンで表示される。
$ date
Sun Jul 12 10:55:30 UTC 2026
シェルのセッション中はexportで有効にする
同じシェルのセッション内で繰り返し別のタイムゾーンを使いたい場合は、exportでTZを環境変数として設定する。
$ export TZ="Asia/Kolkata"
$ date
Sun Jul 12 16:25:30 IST 2026
セッション中はTZが有効なままなので、以降のdateコマンドはすべて指定したタイムゾーンで表示される。
元のタイムゾーンに戻すにはunsetでTZを削除する。
$ unset TZ
$ date
Sun Jul 12 10:55:30 UTC 2026
date -dと組み合わせる
TZは-dオプションで日時を指定する場合にも有効。基準となる日時のタイムゾーンを変換した結果を表示できる。
$ TZ="Asia/Tokyo" date -d "2025-01-01 00:00:00 UTC"
Wed Jan 1 09:00:00 JST 2025
複数のタイムゾーンをまとめて確認する
シェルスクリプトでループさせると、複数のタイムゾーンの現在時刻を一覧できる。
$ for tz in "Asia/Tokyo" "America/Los_Angeles" "Europe/London" "UTC"; do
printf "%-20s %s\n" "$tz" "$(TZ=$tz date +"%Y-%m-%d %H:%M:%S %Z")"
done
Asia/Tokyo 2026-07-12 19:55:30 JST
America/Los_Angeles 2026-07-12 03:55:30 PDT
Europe/London 2026-07-12 11:55:30 BST
UTC 2026-07-12 10:55:30 UTC
海外拠点とのミーティング調整や、UTCとJSTのログ突き合わせなどに活用できる。
Dockerコンテナに指定する
Dockerコンテナを起動する際に-eオプションでTZを指定すると、コンテナ内のdateコマンドの表示タイムゾーンを変更できる。
$ docker run --rm -e TZ="Asia/Tokyo" ubuntu:24.04 date
Sun Jul 12 20:03:46 JST 2026
TZを指定しない場合、コンテナ内はUTCがデフォルトのタイムゾーンとして扱われる。
$ docker run --rm ubuntu:24.04 date
Sun Jul 12 11:03:57 UTC 2026
ベースイメージにtzdataパッケージがインストールされていない場合、TZを指定してもタイムゾーン名やオフセットが正しく反映されない点に注意が必要である。
$ docker run --rm -e TZ="Asia/Tokyo" ubuntu:24.04 date
Sun Jul 12 11:04:15 Asia 2026
事前にtzdataパッケージをインストールしたイメージを使用するか、DockerfileでtzdataをインストールしてからTZを指定する。
FROM ubuntu:24.04
RUN apt-get update && apt-get install -y tzdata
ENV TZ=Asia/Tokyo
タイムゾーン名の一覧を確認する
TZに指定できるタイムゾーン名は、timedatectl list-timezonesコマンドで確認できる。
POSIX形式のオフセットを指定する場合の注意点
TZにはタイムゾーン名の他に、UTC+9のようなPOSIX形式のオフセットも指定できる。ただし、POSIX形式では符号の意味がUTCからの時差と逆転する点に注意が必要である。
$ date
Sun Jul 12 10:55:30 UTC 2026
$ TZ="UTC+9" date
Sun Jul 12 01:55:30 UTC 2026
UTC+9はUTCより9時間進んだ時刻ではなく、UTCより9時間遅れた時刻(UTC-9相当)として扱われる。日本時間を意図する場合はUTC+9ではなくAsia/Tokyoのようなタイムゾーン名を指定する。
まとめ
TZ環境変数を使うと、システムのタイムゾーン設定を変更せずに任意のタイムゾーンで日時を確認できる。ワンショットでの指定とexportによるセッション単位での指定を使い分けると、ログ調査や海外拠点とのやり取りで効率的に日時を扱える。
