Zuerst wird EST
verwendet, um sich auf eine Vielzahl von verschiedenen Zeitzonenoffsets zu beziehen. Vermutlich meintest du UTC-05:00
.
Zweitens, wenn man Datetime-Arithmetik durchführen will, möchte man selten mit Offsets umgehen; man möchte fast immer Zeitzonen, die mit einem geografischen Ort verbunden sind (wie America/New_York
). America/New_York
wäre eine geeignete Wahl für den Einsatz unten, aber ich habe stattdessen die flexiblere local
verwendet.
use strict;
use warnings;
use feature qw(say);
use DateTime::Format::Strptime qw();
my $format1 = DateTime::Format::Strptime->new(
pattern => "%Y-%m-%dT%H:%M:%S%Z",
on_error => "croak",
);
my $format2 = DateTime::Format::Strptime->new(
pattern => "%Y-%m-%dT%H:%M:%S",
time_zone => "local",
on_error => "croak",
);
my $dt1 = $format1->parse_datetime('2016-06-30T09:00:00-04:00');
my $dt2 = $format2->parse_datetime('2016-07-01T15:37:25');
Dann können Sie tun, was Sie wollen. Sie erwähnten, dass Sie sie vergleichen wollten, was mit numerischen Vergleichsoperatoren geschehen kann (z. B. $dt1 < $dt2
).
Das folgende Beispiel wandelt die Zeitstempel in RFC3339 Zeitstempel (der Zeitstempel-Format von Internet-Standards verwendet wird):
$dt1->set_time_zone("UTC");
say "dt1: " . $dt1->strftime("%Y-%m-%dT%H:%M:%SZ");
$dt2->set_time_zone("UTC");
say "dt2: " . $dt2->strftime("%Y-%m-%dT%H:%M:%SZ");
Sie meinen, Sie die Zeitzone entfernen möchten versetzt? ('-04: 00' in Ihrer ersten Saite) – ThisSuitIsBlackNot
@ThisSuitIsBlackNot Ja, eigentlich muss ich das entfernen (-4.00) und das" 2016-06-30T09: 00: 00-04: 00 "vom Typ string und ich muss In DateTime-Objekt konvertieren! – user3784251
Welche Zeitzone sollte das DateTime-Objekt verwenden? – ThisSuitIsBlackNot