2009-03-02 28 views
2

Web servisimin Perl'de JSON biçiminde aldığını bu tarih biçimini nasıl ayrıştırabilirim? Bir DateTime nesnesine dönüştürmek istiyorum:JSON Tarih Formatını Perl'de nasıl ayrıştırırım?

Date(1216647000000-0400) 

Ben ofset bir zaman dilimine birlikte Dönemden beri milisaniye olduğunu düşünmüştüm ama tarih yolu kapalıdır.

+0

nasıl bir yol kapalı tarihlerdir? JSON tarihinin ve değerinin bir örneğini verebilir misiniz? – ysth

cevap

7

Zaman, çağdan bu yana milisaniye cinsinden listelenir. Epoch saniye elde etmek için 1000'e bölün.

karşılaşabileceğiniz bu diğer durumlarda ile çalıştığından emin olun:

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, \ d + ve [+ -] arasında gereksizdir. 2. ve 3. \ b'yi kaldırır ve sonunda bir tane eklerim. – ysth

İlgili konular