nikkie-ftnextの日記

イベントレポートや読書メモを発信

DebianのdateコマンドとTZ環境変数

はじめに

『かがみの孤城』Blu-ray&DVDが発売されました!🎉 nikkieです。
これでおうちでもこころちゃん🤗

DebianのDockerイメージを使っていて知った、dateコマンドでタイムゾーンを変える方法(小ネタ)をアウトプットします。

目次

dateはUTCで表示される

% docker run --rm -it python:3.11-bookworm bash

root@d7106d717fa9:/# date
Wed Jun 28 12:00:27 UTC 2023

JSTに変えるには、TZ環境変数を指定

root@d7106d717fa9:/# TZ=':Asia/Tokyo' date
Wed Jun 28 21:00:30 JST 2023

UTC+9時間のJSTになりました!
説明がdateコマンドのマニュアルにあります。

例を見ると

米国西海岸のタイムゾーンで日時を表示する場合

$ TZ='America/Los_Angeles' date

TZの指定の豆知識(先頭はコロン始まり)

TZの値の形式は2つあると説明されます1

2 番目の形式は、タイムゾーンの情報をファイルから読み込むように指定する。
:[filespec]

ニュージーランドの例
TZ=":Pacific/Auckland"

コロンは省略できます(省略するのがよく見る指定の仕方だと思います)

コロンが省略された場合には、 上記の TZ の各形式での解釈を試みる。

先のTZ=':Asia/Tokyo'という指定は、コロンの省略もできるわけです!

root@d7106d717fa9:/# TZ='Asia/Tokyo' date
Wed Jun 28 21:00:32 JST 2023

PythonのdatetimeにもTZ環境変数は適用される

root@d7106d717fa9:/# python -V
Python 3.11.4

root@d7106d717fa9:/# python -q
>>> from datetime import datetime
>>> datetime.now()
datetime.datetime(2023, 6, 28, 12, 0, 59, 377486)

root@d7106d717fa9:/# TZ=':Asia/Tokyo' python -q
>>> from datetime import datetime
>>> datetime.now()  # UTC+9時間!
datetime.datetime(2023, 6, 28, 21, 1, 12, 266876)

終わりに

DebiandateコマンドとTZ環境変数についてアウトプットしました。

小さいですが新たな発見が、dateコマンドやTZ環境変数にありました!


  1. このエントリでは掘り下げませんが、std offset dst[offset][,start[/time],end[/time]]という形式もあるそうです