2009-03-02 6 views
2

Как я могу проанализировать этот формат даты, который мой веб-сервис получает в формате JSON на Perl? Я хотел бы, чтобы преобразовать его в объект DateTime:Как разобрать формат даты JSON в Perl?

Date(1216647000000-0400) 

Я предположил, что это миллисекунды с начала эпохи наряду с временной зоной смещения, но даты далеко.

+0

Как даты далеко? Можете ли вы привести пример даты JSON и его значение? – ysth

ответ

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 + и [+ -]. Я бы удалил второй и третий \ b и добавлю один в конец. – ysth

Смежные вопросы