実はタイムゾーンの計算は自力でやると
非常に難しい。なぜなら、例えば米国の場合は「3月の第2週の日曜日の午前2時」ならびに「11月の第1週の日曜日の午前2時」だったりするからだ。ちなみに
ウィキペディア(Wikipedia)によると、
2007年からは「包括エネルギー法案」の可決により期間が約1ヶ月延び、開始日は3月の第2日曜日、終了は11月の第1日曜日となることが決まっている。なお、議会で法案が通れば、その自治体は夏時間を使用しなくてもよいため、2005年現在、ハワイ州は州全体、アリゾナ州とインディアナ州では大半の自治体で夏時間を採用していない。
ということで、2007年3月からはそれまでの4月の第1週の日曜日~10月の最終週の日曜日から制度の変更があった。
さて、Perl でタイムゾーンを得るにはどうするかというと、Time::Timezone モジュールを使う。フォーマットは
Time::CTime を使ってみた。
使用するモジュール
use Time::Timezone;
use Time::CTime;
#!/usr/bin/perl
print &getDateTime('JST');
print &getDateTime('GMT');
print &getDateTime('PST');
sub getDateTime {
my $tz = shift;
use Time::Timezone qw (tz_offset);
use Time::CTime;
return strftime("%Y/%m/%d %R", gmtime(time + tz_offset($tz)));
}
1;
トラックバック URL:
https://perltips.twinkle.cc/trackback/5