Pergunta

Como posso analisar esse formato de data que meu serviço web está recebendo em formato JSON em Perl? Eu gostaria de convertê-lo em um objeto DateTime:

Date(1216647000000-0400)

Eu achava que era milissegundos desde a época juntamente com uma diferença de fuso horário, mas as datas são longe.

Foi útil?

Solução

O tempo está listado em milissegundos desde a época. Divide por 1000 para obter segundos marcaram época.

Certifique-se isso funciona com outros casos que encontrar:

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;
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top