[pochy-user] Re: Date: は +0900 決め打ちなのでしょうか?

Zurück zum Archiv-Index

hiro-****@hiro-***** hiro-****@hiro-*****
2003年 12月 23日 (火) 16:08:46 JST


  ども、hiroです。

TimeZoneについて調べました。
time.hでは _timezone という変数が定義されておりまして、
tzset();でこの変数が設定されるようです。time.hはCTimeを
使える状態であれば暗黙のうちに読み込まれています。
_timezone に設定される値は(標準時-ローカル時)を秒で表した物で、
日本ですと -32400 テキサスですと 21600 がセットされます。
そこで、

tzset();
CString TIME_ZONE;
TIME_ZONE.Format("%+03d%02d",(-_timezone)/60/60,(-_timezone)/60%60);

とすることにより、DEF_TIME_ZONEと同じ形式のものを動的に作ることができます。

また、HeaderInfo.cpp の564行目〜573行目のchange local timeは

tzset();
t-=CTimeSpan(_timezone);

で同じ効果が得られます。

tzset();は起動時に一度呼び出すべきか、使うときに毎回呼び出すべきか悩ましいです。
後者ですと、Pochy起動中にタイムゾーンを変えた場合にすぐに対応できることになります。
前者ですと「少しでも軽く」というPochyのコンセプトに合います。

また、_timezoneをプログラムで使うようにすると、当然のことながら、Windowsのタイムゾーンを
正しく設定していない人には悪影響が出るようになります。このような人へも救いの手だてを
残しておくべきか(setting.iniにより強制的に+0900にするモードを残す)、そのような人には
これを機会にタイムゾーンを設定してもらうか、判断がムズカシイと思います。

ではでは。




pochy-user メーリングリストの案内
Zurück zum Archiv-Index