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.

Était-ce utile?

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
scroll top