2009-03-02 7 views
2

Comment puis-je analyser ce format de date que mon service Web reçoit au format JSON en Perl? Je voudrais le convertir en un objet DateTime:Comment analyser le format de date JSON en Perl?

Date(1216647000000-0400) 

Je suppose que c'était millisecondes depuis l'époque avec une zone de décalage horaire, mais les dates sont loin.

+0

Comment sont les dates loin? Pouvez-vous donner un exemple de la date JSON et de sa valeur? – ysth

Répondre

7

L'heure est indiquée en millisecondes depuis l'époque. Diviser par 1000 pour obtenir les secondes de l'époque.

Assurez-vous que cela fonctionne avec d'autres cas, 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; 
} 
+0

\ b est redondant entre \ d + et [+ -]. J'enlèverais les 2nd & 3rd \ b et en ajouterais un à la fin. – ysth

Questions connexes