DateTime
モジュールでis_dst()
メソッドを使用して、夏時間の移行が発生しているかどうかを確認しようとしています。Perl DateTime "is_dst()"メソッドが正しく動作しない
私はという非常に基本的な例を書いて始めました。がうまくいくと思いますが、何らかの理由で予期せぬ結果が出ています。
例:
#!/usr/bin/perl
use strict;
use warnings;
use DateTime;
my $dt1 = DateTime->new(
'year' => 2015,
'month' => 3 ,
'day' => 8 ,
'hour' => 3 ,
);
my $dt2 = DateTime->new(
'year' => 2015,
'month' => 3 ,
'day' => 7 ,
'hour' => 3 ,
);
print $dt1."\n";
print $dt2."\n";
print $dt1->is_dst()."\n";
print $dt2->is_dst()."\n";
私は、夏時間の移行を知っていた日付で開始:2015年3月8日(日曜日)。 3 AMを選択しました。夏時間の移行がその時点ですでに発生していることがわかっていたからです。
は、それから私は私が夏時間の移行の前に知っていた日付を取っ:2015年3月7日(土曜日)も3 AMで。
次に、2つの日付とそれに対応するDSTフラグを出力します。
出力:
2015-03-08T03:00:00
2015-03-07T03:00:00
0
0
二つの日付が期待どおりに印刷しますが、何らかの理由で最初の日付が夏時間の間に発生しても、第二日付が夏時間前に発生節約時間の場合は、両方にDSTフラグが設定されていません。
なぜこれが正しく動作しないのですか?何か不足していますか?
あなたはタイムゾーンを必要とすることができますか? – Veeram
'time_zone => America/Los_Angeles'を追加するとうまくいきます:) – zdim