2009-03-02 72 views
2

如何解析我的Web服務在Perl中以JSON格式接收的日期格式?我想將其轉換爲一個DateTime對象:如何解析Perl中的JSON日期格式?

Date(1216647000000-0400) 

我以爲這是因爲與時區偏移量沿毫秒爲單位,但日期是路要走。

+0

如何是日期的路要走?你能舉一個JSON日期和它的值的例子嗎? – ysth 2009-03-03 05:49:18

回答

7

時間以自時代開始以毫秒爲單位列出。除以1000獲得紀元秒。

確保此工作與其他情況下,你會遇到:

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 +和[+ - ]之間是冗餘的。我會刪除2nd&3rd \ b並在最後添加一個。 – ysth 2009-03-03 05:48:08