2009-03-02 7 views
2

Wie kann ich dieses Datumsformat analysieren, das mein Web-Service im JSON-Format in Perl empfängt? Ich möchte es in ein Datetime-Objekt konvertieren:Wie analysiere ich das JSON-Datumsformat in Perl?

Date(1216647000000-0400) 

Ich nahm an, es war Millisekunden seit Beginn der Epoche zusammen mit einer Zeitzone versetzt, aber die Daten sind weg.

+0

Wie die Daten weg sind? Können Sie ein Beispiel für das JSON-Datum und seinen Wert angeben? – ysth

Antwort

7

Die Zeit wird seit der Epoche in Millisekunden angegeben. Teile durch 1000, um Epochen zu erhalten.

Achten Sie darauf, dies mit anderen Fällen funktioniert auftreten:

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 ist zwischen \ d + und [+ -] redundant. Ich würde die 2. und 3. \ b entfernen und eine am Ende hinzufügen. – ysth

Verwandte Themen