狐の王国


2007年04月03日(火) [過去の今日]

#6 PerlのDateTimeモジュールでset_time_zoneすると9時間ずれる件

元データの日付がUTCで記録されてるのだが、出力はJSTにしたい、と思って

my $dt = DateTime::Format::MySQL->parse_datetime($datetime);
$dt->set_formatter(DateTime::Format::W3DTF);
$dt->set_time_zone('Asia/Tokyo);

とかやると9時間ずれやがる。どうもset_time_zoneは現状の日付がどこのタイムゾーンのものかを指定するもの、ということか?

と思ったら、DateTime(3pm)にこんな記述ハッケソ。

           For example:

             my $dt = DateTime->new( year => 2000, month => 5, day => 10,
                                     hour => 15, minute => 15,
                                     time_zone => 'America/Los_Angeles', );

             print $dt->hour; # prints 15

             $dt->set_time_zone( 'America/Chicago' );

             print $dt->hour; # prints 17

……ちゃんとタイムゾーンに合わせてくれるんじゃん。

つまりあれか。time_zoneが空っぽのときは既存日付のタイムゾーンを指定、そうでなければあたらしく与えられたタイムゾーンの日付に変換、か。

ということでこうだな。

my $dt = DateTime::Format::MySQL->parse_datetime($datetime);
$dt->set_formatter(DateTime::Format::W3DTF);
$dt->set_time_zone('UTC');
$dt->set_time_zone('Asia/Tokyo);

……何か激しく美しくない気がするのは気のせいか?

(@920)

この記事のURI

最近の記事

以上、1 日分

タイトル一覧


カテゴリ分類
Powered by hns-2.19.8, HyperNikkiSystem Project

過去にこの日記が置いてあったcgi.misao.gr.jpは廃止されました。それによって記事へのURIが変わってしまっています。cgi.misao.gr.jpをwww.misao.gr.jpと置き換えるだけで同じ記事にアクセスできるはずです。

Sugano "狐志庵" Yoshihisa(E) @ 美紗緒ネットワーク <koshian@misao.gr.jp>
日記管理ページ