Как разобрать формат даты JSON в Perl? - PullRequest
3 голосов
/ 03 марта 2009

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

Date(1216647000000-0400)

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

1 Ответ

8 голосов
/ 03 марта 2009

Время указано в миллисекундах с начала эпохи. Разделите на 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...