[Date Prev][Date Next][Thread Prev][][Date Index][Thread Index]

timezone (was Re: [gnu.emacs.sources] Shimbun for heise online)



>>>>> In [emacs-w3m : No.06628] 土屋さん wrote:

>>>;; FIXME: timezone is always wrong, slightly better than the
>>>;; default "+0900"
>>>"+0000"))))))

山> これは何とかしないと国際化の枷になるかもしれません。

>> これ,具体的にはどういう問題を懸念されていますか?

ごめんなさい、前回この言い訳として書いたことはウソです。^^;;

ぼくは 3月8日の shimbun.el の変更で、記事の Date ヘッダに曜日の
表示を追加するようにしたのですが、ロンドンより西の国では一日前の
曜日になってしまう場合があることに気がつきました。

(current-time-string (encode-time 0 0 0 day month year "+0000"))

year, day, month は web コンテンツから抽出した年月日です。ここで
encode-time が返す UTC の時刻を、current-time-string でローカル
時刻の文字列に変換してしまっているというおそまつ。直しました。

ところで、どんな文字列が encode-time の第7引数として有効だか知っ
ていましたか?  日本標準時を指定するための "JST" というのは、おそ
らく多くの環境で無効です。実は "+0000" もだめなんですが、無効な
文字列を与えられたとき encode-time はデフォルトで UTC 基準で動作
します。

これに関連して、w3m-antenna.el で encode-time の第7引数に "JST"
を与えていますが、これが正しく日本標準時として扱われる環境がある
かもしれないし、ぼくの場合のように UTC になってしまう場合もあり
ます。問題無いですか?

encode-time の docstring から抜粋
---------------------------------
ZONE defaults to the current time zone rule.  This can
be a string or t (as from `set-time-zone-rule'), or it can be a list
(as from `current-time-zone') or an integer (as from `decode-time')
applied without consideration for daylight savings time.

日本標準時を指定するための値として正しいのは、

  /usr/share/zoneinfo/ などにあるファイル名 (らしい)
  nil (日本でだけ)
  car 項が 32400 である list (cdr は何でも良いし無くても可)
  数字の 32400

です。ぼくの場合 /usr/share/zoneinfo/ に JST というファイルは無
いけれども Japan はあるので、それは有効です。

;; ついでに書くと、set-time-zone-rule の引数に "JST" や "+0900"
;; などを与えると UTC になってしまい、日本標準時を設定できるのは
;; "Japan" だけでした。

そういうわけで、w3m-antenna.el では "JST" の代わりに 32400 を使
うのが確実です。とは言え、今まで UTC で動作していた人の環境では
どうなるんでしょう...
-- 
Katsumi Yamaoka <yamaoka@jpl.org>