Fechas en GNU/Linux y Solaris: Conversión de fechas desde y hacia tiempo Unix epoch

Hola compañeros de la shell,

En esta entrada vamos a revisar como convertir fechas desde y hacia formatos de tiempo Unix epoch (que se definen como segundos desde 1970-01-01 00:00:00 UTC).

Si queremos saber la fecha hora actual en formato stantdard ejecutaremos el comando date:

date
Sat Sep 14 17:35:02 CEST 2019

Si queremos saber la hora actual en tiempo de Unix ejecutaremos date +%s :

date +%s
1568478584

Para realizar conversiones entre fechas utilizaremos date -d o date –date:

1. Convertir epoch a fecha standard.

Para convertir la fecha desde el formato tiempo epoch al formato estándar tenemos dos formas, la primera es la más sencilla pero no funciona en todos los sistemas, especialmente si tienen un versión antigua de date, así que no olvidéis mirar también la segunda.

Método 1: date -d @epoch_time

date -d @1568478584
Sat Sep 14 18:29:44 CEST 2019

Método 2: date -d «1970-01-01 tiempo_epoch sec GMT»

date -d "1970-01-01 1568478584 sec GMT"
Sat Sep 14 18:29:44 CEST 2019

2. Convertir fecha standard a epoch:

date -d ‘Fecha standard’ +%s

date -d 'Sat Sep 14 18:39:20 CEST 2019' +%s
1568479160

Si tenemos errores al ejecutar printf, ver:

https://stackoverflow.com/questions/12845997/unexplicable-error-in-bash-printf-command-inside-a-script-returns-invalid-numb

Seguramente la variable de entorno del separador decimal será distinta a la que usa el número que pasamos como argumento a printf.

P.D.: Ojo, si la fecha en formato epoch incluye los milisegundos se obtienen valores incorrectos al realizar la conversion (fijarse en el año). Eliminando los tres últimos caracteres de la fecha se corrije este problema:

# Fecha en formato epoch precision milisegundos
date -d @1624876144011
Tue Apr 10 22:26:51 CEST 53460
# Eliminando los 3 últimos caracteres de la fecha se corrije este problema
date -d @1624876144
Mon Jun 28 12:29:04 CEST 2021

 

Espero que os sirva.

Nos vemos al otro lado de la pantalla negra.

Esta entrada fue publicada en Sin categoría. Guarda el enlace permanente.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *