プロが教えるわが家の防犯対策術!

Linuxなどで環境変数TZに「JST-9」などと、日本標準時であること時差を設定しますが、これらを設定する意味が、いまひとつ解りません。
つまり、設定ファイルなどにJSTが登録されているなら、わざわざ時差を指定する必要がないような気がするのです。
「JST」を設定するだけで時差が9時間だと判別できる、あるいは「-9」と書くなら「JST」を付ける意味がないのでは、と思うのです。なぜ両方を指定する必要があるのでしょう。
また海外時間の場合は「EST5EDT」というように、標準時、時差、夏時間ON、と書いたりしますが、わざわざ夏時間のON・OFFを指定しなくても地域と日付から自ずと特定できるのではないかと思うのですが、この点も意味がよく解りません。
さらに夏時間の存在しないハワイ州に「HDT」というものが存在するのも、何の意味があるのか…。

私が、根本的・基本的な内部での処理が理解できていないのだと思うのですが、上記のようなこと、どなたかご教授いただけたらと思います。
よろしくお願いいたします。

A 回答 (1件)

1. 「-9」と書くだけでは、その地域の標準時がJST(日本標準時)なのか別の国の標準時なのか、といったことが判別できませんので、「-9」と書くだけでは不足です。



2. 「JST」は「JST-9」と同じ意味なので、「JST-9」と書くことは基本的には冗長です。ただし、これは他所に「JSTの時差は-9である」という一覧を持っていることが前提になります。仮に新しい国が誕生し、新しい標準時表記が現れたとき、「一覧表」に頼っていると一覧表が更新されるまでその新しい標準時表記には対応できなくなってしまいます。「JST-9」という形式の表記であれば、一覧表を必要としないので、そのような問題は生じません。

3. 米国の夏時間は、必ずしも全国的に行われているわけではありません。夏時間実施期間中は、「EST5EDT」の地域(夏時間になる地域)もあれば「EST5」の地域(夏時間を実施していない地域)もあるわけです。

4. HDTは「ハワイ/アラスカ夏時間」で、ハワイでは夏時間を実施していないが、アラスカでは実施しており、そちらで使われるようです。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
なるほど、ようするに最初の3文字「JST」はOSの内部処理的にはあまり重要な意味を持っていない、と考えてよさそうですね。
その後調べてみたら、実に様々な過去の歴史とか政治的な事情などがあって、JSTにも夏時間の識別子が存在するとか、夏時間スタートの時期がよくわからなかったり、地域の判別も複雑なようですね。
結局のところ、ローカルタイムを算出するための差分を与えるだけで、それにしたがって加減算をするだけなんですね。
プログラムにおいては、数字部分以外は、あまり気にしないことにします。
ありがとうございました。

お礼日時:2005/09/29 13:59

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!