Pregunta

¿Cómo puedo analizar este formato de fecha que mi servicio web está recibiendo en formato JSON en Perl? Me gustaría convertirlo en un objeto DateTime:

Date(1216647000000-0400)

Supuse que eran milisegundos desde la época junto con un desplazamiento de zona horaria, pero las fechas están muy alejadas.

¿Fue útil?

Solución

El tiempo se muestra en milisegundos desde la época. Divide entre 1000 para obtener segundos de época.

Asegúrese de que esto funcione con otros casos que encuentre:

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 bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top