Comment puis-je convertir des fuseaux horaires en Perl?
Je suis en train de convertir une date/heure GMT 0 à GMT-6 en Perl.
Par exemple, un Serveur DHCP durée du bail est au format suivant:
2010/02/18 23:48:37
Je suis en train de convertir l'époque de la Localtime horaire (GMT -6) mais besoin d'elle à l'honneur de l'heure d'été.
Le script ci-dessous peut-être exagéré, mais je ne suis pas sûr de savoir comment procéder à partir d'ici. (Toute suggestion serait géniale).
my $TIMESTART;
$TIMESTART = "2010/02/18 23:48:37";
$TIMESTART =~ s/\//-/g;
use DateTime;
use DateTime::TimeZone;
use DateTime::Format::MySQL;
my $dt = DateTime::Format::MySQL->parse_datetime($TIMESTART);
my $tz = DateTime::TimeZone->new( name => 'America/Chicago' );
print $tz->offset_for_datetime($dt) . "\n";
Il va afficher les lignes suivantes:
2010-02-18T23:48:37
-21600
J'ai besoin d'être en mesure d'ajouter -21600 à la date du jour pour le fuseau horaire de GMT -6 mais je ne suis pas sûr de savoir comment cette approche.
source d'informationauteur jinanwow
Vous devez vous connecter pour publier un commentaire.
Appel
set_time_zone
méthode 2 fois:Comment cela fonctionne:
DateTime
objet sans zone de temps spécifiée, "flottant" de fuseau horaire est définiset_time_zone
changement de fuseau horaire pourUTC
sans conversionset_time_zone
changementUTC
àAmerica/Chicago
Cela permettra de convertir de l'heure UTC en ETC de temps.
Vous pouvez également utiliser la date/l'heure dans n'importe quel format à l'aide de +paramètre de FORMAT de date.
date --date='TZ="ETC" 18:30'
: Pièce
est d'un très léger morceau de code de bonne qualité. Ou vous pouvez simplement utiliser built-ins etstrftime
etPOSIX::strptime
1, passer de l'datetime
2 si l'objet datetime zone est flottant, il défini sur par défaut de votre choix.e.g:
$dt->set_time_zone($localTimeZone) if ($dt->time_zone_short_name() eq 'floating');
3, puis réglez le fuseau horaire de nouveau à faire votre fuseau horaire conversion