Ich versuche, die is_dst()
Methode im DateTime
Modul zu verwenden, um festzustellen, ob eine Umstellung der Sommerzeit auftritt.Perl DateTime "is_dst()" Methode funktioniert nicht richtig
Ich begann mit dem Schreiben eines sehr einfachen Beispiels, dass ich sicher würde funktionieren, aber aus irgendeinem Grund bekomme ich unerwartete Ergebnisse.
Beispiel:
#!/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";
begann ich mit einem Datum, das ich kannte einen Sommer Übergang war: Sonntag, 8. März 2015. Ich wählte 3 AM, weil ich wusste, dass der Übergang der Sommerzeit zu diesem Zeitpunkt bereits stattgefunden hätte.
Dann nahm ich ein Datum, das ich vor dem Sommer Übergang wusste, war: bei 03.00Samstag, 7. März 2015 auch.
Dann drucke ich die zwei Daten und ihre entsprechenden DST-Flags.
Ausgang:
2015-03-08T03:00:00
2015-03-07T03:00:00
0
0
Die beiden Daten genau drucken, wie erwartet, aber aus irgendeinem Grund, obwohl das erste Datum tritt während der Sommerzeit, und das zweite Datum tritt vor Tagesanbruch Sparzeit, das DST-Flag ist nicht für beide gesetzt.
Warum funktioniert das nicht richtig? Fehle ich etwas?
können Sie eine Zeitzone benötigen? – Veeram
Wenn ich 'time_zone => America/Los_Angeles' hinzufüge ist es in Ordnung :) – zdim