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 に設定すれば
解決される