Comment analyser le format de date JSON en Perl?
Question
Comment puis-je analyser le format de date que mon service Web reçoit au format JSON en Perl? J'aimerais le convertir en objet DateTime:
Date(1216647000000-0400)
J'ai supposé que c'était en millisecondes depuis l'époque avec un décalage de fuseau horaire mais les dates sont bien décalées.
La solution
L’heure est indiquée en millisecondes depuis l’époque. Divisez par 1000 pour obtenir les secondes de l'époque.
Assurez-vous que cela fonctionne avec les autres cas que vous rencontrez:
use DateTime;
my $json_date = 'Date(1216647000000-0400)';
if ($json_date =~ m{ \b (\d+) \b ([+-]\d\d\d\d\b)? }x ) {
my ( $epoch_milliseconds, $time_zone ) = ( $1, $2 );
my $dt = DateTime->from_epoch( epoch => $epoch_milliseconds / 1000 );
if ($time_zone) {
$dt->set_time_zone($time_zone);
}
print $dt->datetime;
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow