[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

28.10 タイムゾーン・ルールの指定

通常、日付の解釈は、現在のタイムゾーンのルールを使って行われる。 そして、その現在のタイムゾーンのルールを指定しているのは、環境変数 TZ か、 TZ が設定されていなければ、システムのデフォルト設定である。 今、ある一つの日付のみに別のタイムゾーンでデフォルトとして使われる一連のルールを適用したいとしよう。 その場合は、日付を ‘TZ="rule"’ という文字列で始めればよい。 日付中では、対になった二重引用符 (‘"’) で rule を必ず囲わなければならない。 また、rule 中に引用符やバックスラッシュがあるときは、 それをバックスラッシュでエスケープしなければならない。

一例を挙げると、GNU の date コマンドを使って、「パリで 2004 年 10 月 31 日 午前 6 時 30 分のとき、 ニューヨークでは何時か?」という質問に答えることができる、 以下で示すように、‘TZ="Europe/Paris"’で始まる日付を使うのである。

 
$ export TZ="America/New_York"
$ date --date='TZ="Europe/Paris" 2004-10-31 06:30'
Sun Oct 31 01:30:00 EDT 2004

この例では、‘--date’ のオペランドの最初の部分で、その日付専用の TZ が設定されている。そこで、このオペランドの残りの部分は、‘Europe/Paris’ のルールに従って処理され、‘2004-10-31 06:30’ という文字列が、パリの日時であるかのように扱われる。ところが、date コマンドの出力は、全体のタイムゾーンのルールに従って処理されるので、 出力にはニューヨークの時刻が使用されるのである。 (2004 年には、パリは通常ニューヨークより 6 時間進んでいた。 しかし、この例は、時差が 5 時間だったハロウィーンの日のほんの短い間のことを言っている。)

TZ の値はルールであり、ルールには通常、‘tz’ データベースの地域名が付けられている (http://www.twinsun.com/tz/tz-link.htm)。 地域名の最新の一覧は、TWiki Date and Time Gateway で見ることができる (http://twiki.org/cgi-bin/xtra/tzdate)。 なお、GNU 以外のホストの中には、TZ を設定するとき、‘TZ=":America/New_York"’ のように、地域名の前にコロンを置く必要があるものもある。

tz’ データベースには、‘Arctic/Longyearbyen’ から ‘Antarctica/South_Pole’ に至るまで、実にさまざまな地域が含まれている。 それでも、目下航海の最中でタイムゾーンが船特有のものである場合や、‘tz’ データベースに対応していない non-GNU のホストを使用している場合は、‘tz’ データベースの地域名で表されるルールの代わりに、POSIX 式のルールを使う必要があるかもしれない。POSIX 式では、‘UTC0’ のような単純なルールだと、夏時間なしのタイムゾーン指定になるが、 そのほかに、簡単な夏時間制度なら指定できる別のルールも存在する。 See (libc)TZ Variable section ‘Specifying the Time Zone with TZ’ in The GNU C Library.


This document was generated on June 7, 2022 using texi2html 1.82.