dateコマンドでタイムゾーンを指定する

こんにちは、さるまりんです。

とあるサーバーでdateコマンドを実行してみました。

$ date
2021年  6月 20日 日曜日 04:49:01 UTC

タイムゾーンがUTCで設定されているようです。

/etc/sysconfig/clock

ZONE="UTC"
UTC=true

(とあるサーバーはAmazon Linuxです。)

この結果を日本標準時(JST)で表示したい時は次のようにタイムゾーンを指定します。

$ TZ=JST-9 date
2021年  6月 20日 日曜日 14:12:54 JST

TZはタイムゾーンを示す環境変数です。これを一時的に設定してdateコマンドを実行しています。

JST-9がタイムゾーンの文字列です。

JSTは日本標準時(Japan Standard Time)、-9はJSTからみてUTC(協定世界時)との時差です。UTCはJSTから9時間前=マイナス9時間という意味です。

日本標準時を調べてみるとUTC+9と書いてあることがあります。これは逆、UTCからみてJSTは9時間後(プラス9時間)という意味です。時間ってややこしいですね(汗)。

環境変数を設定する部分とコマンドの間にセミコロンはありません。

TZ=JST-9; date

こうではなく

TZ=JST-9 date

こうです。

タイムゾーンを示すこんな文字列でも設定可能です。

$ TZ=Asia/Tokyo date
2021年  6月 20日 日曜日 14:30:51 JST

もちろん他のタイムゾーンも表示できます。

例えばアメリカ東部標準時だと

$ TZ=EST+5 date
2021年  6月 20日 日曜日 00:32:12 EST

夏時間だと

$ TZ=EDT+4 date
2021年  6月 20日 日曜日 01:32:24 EDT

America/New_Yorkで指定すると

$ TZ=America/New_York date
2021年  6月 20日 日曜日 01:33:51 EDT

です。

ちなみに、ESTは東部標準時 East Standard Time、EDTは東部標準時(夏時間) Eastern Daylight Timeの略です。

よく使うので.bashrcでエイリアスを設定してみました。

alias jstdate='TZ=JST-9 date'

実行するとこうなりました。

$ jstdate
2021年  6月 20日 日曜日 14:40:33 JST

ちょっと便利になりました。

他のLinuxやMac OSでも同じかもしくは似たような指定で同じことができると思います。

読んでくださってありがとうございました。

それではまた!