[mew-dist 21597] Re: add no Messege-ID: by Mew

Shun-ichi GOTO gotoh at example.com
2002年 9月 2日 (月) 23:32:29 JST


>>>>> at Mon, 02 Sep 2002 22:07:23 +0900 (JST)
>>>>> kazu == Kazu Yamamoto (山本和彦) <kazu at example.com> said,

kazu> Q1) システムの time-zone を取得するのは、(getenv "TZ") が正しい方法な
kazu>     のでしょうか?

環境変数ってくらいなので、「システムの...」ではないですね。
正しい方法が何なのかは知らないです。


kazu> Q2) Emacs の time-zone を設定するのは、setenv() を使うべきなのでしょう
kazu>     か? set-time-zone-rule() という関数があるようですが。

set-time-zone-rule<f>の存在をすっかり忘れていました。
きっとそちらを使うべきなのだろうと思います。

ただ、環境変数TZとの関連は調べとかないと、、、ということで、本来はsouce
を追うべきですが、Meadow 1.15 にて*scratch*で軽く試す限りは、以下の結果
が得られました。

1. (format-time-string "%z (%Z)" (current-time)) の値は(setenv "TZ" ...) 
   と (set-time-zone-rule ...)のうち、あとに実行した方の内容が効いて来ま
   す。

2. (set-time-zone-rule ...)しても(getenv "TZ")の内容は変わらない。

3. (set-time-zone-rule nil)した場合、(getenv "TZ")の内容によらず、
   TZが設定されていないときと同じ振る舞い。


>>>>> at Mon, 02 Sep 2002 22:43:22 +0900 (JST)
>>>>> kazu == Kazu Yamamoto (山本和彦) <kazu at example.com> said,

kazu> NetBSD では、システムの time-zone を変更した後で、
kazu> 	(set-time-zone-rule nil)
kazu> を実行すると、システムの time-zone に追従するようです。

kazu> Windows ではどうですか?

...ということで追従します。

ただし、一点、Windows固有の注意があります。Windowsではzone文字列を得る際
に、MSVC Run Time Libraryを使用しており、コイツがまたクセモノで、日本語
環境では"東京標準時"という漢字文字列を返します。しかも現在のEmacsはその
文字列をdecode せずに返してしまうという問題があります。

ex.  
    (progn 
      (set-time-zone-rule nil)
      (format-time-string "%z (%Z)" (current-time)))
    => "+0900 (\223\214\213\236 (\225W\217\200\216\236))"

    (progn 
      (set-time-zone-rule nil)
      (decode-coding-string (format-time-string "%z (%Z)" (current-time))
                            'shift_jis))
    => "+0900 (東京 (標準時))"

そのため『TZを明示的に設定する』というのが日本語環境でNTEmacs/Meadowを使
う上でのFAQにもなっています。しかるに、(set-time-zone-rule nil) を利用す
るとなると、残念ながらこの問題が再浮上してしまいます。

# この問題は本来Emacs (NTEmacs/Meadow)本体が対応すべき問題で、以前
# current-time-zone<f>へのパッチを投げたのですが、その修正だけでは不十分
# でして、format-time-string<f> の処理には未だにこの問題が残っています。

## というか、POSIX的に正しくはどう振舞うべきか、を調べてないのでほったら
## かしてるだけなのですが。。。

--- Regards,
 Shun-ichi Goto  <gotoh at example.com>
   R&D Group, TAIYO Corp., Tokyo, JAPAN



Mew-dist メーリングリストの案内