Windowsで DateTime モジュールを使った場合の問題

Windows上でのPerl で DateTime モジュールのコンストラクタに
"time_zone => local"を指定した場合

Cannot determine local time zone

とエラーメッセージがでてオブジェクトの生成に失敗する。

原因は

内部で呼び出している

DateTime::TimeZone::Local モジュールの TimeZoneメソッドからロードしている

DateTime::TimeZone::Local::Win32 モジュール。

このモジュールが、レジストリーの

HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\TimeZoneInformation\\StandardName

キーから得た値を キーにして内部で保持しているタイムゾーンハッシュから

タイムゾーン名を得ている。

だが、このレジストリのキーの値が、"東京 (標準時)" と設定されてしまっているの

で、タイムゾーンハッシュから、タイムゾーン名を得られず

上記のようなエラーメッセージがでてしまっている。

対策は

上記、レジストリーキーの値を

Tokyo もしくは Tokyo Standard Time に設定すれば

解決される