Date

El comando Date nos ofrece muchas más posibilidades que darnos la fecha y la hora actuales, como por ejemplo:

Fechas reltivas

Para calcular fechas relativas podemos sumar o restar a la fecha actual (por defecto) o a una fecha concreta tiempo expresado en palabras en inglés

# actual 2018-03-26
date +%Y-%m-%d --date="-1 year -1 day"
2017-03-25

# obtener fecha 1 año y 2 días anterior al año actual (2018) y mes 01 día 01
date +%Y-%m-%d --date="$(date +%Y-01-01) -1 year -1 day"
2016-12-30

# actual 2018-03-26, mostrar ayer
date +%Y-%m-%d --date="yesterday"
2018-03-25

Pasar de fecha a número de segundos desde la época

date --date='1970-01-01 00:00:01' +%s
1
date --date='2000-01-01 00:00:01 UTC' +%s
946684800

Saber el día de la semana de una fecha

date -d '2009-11-02' +%A
Lunes

Pasar de segundos desde la época a fecha

date -d '1970-01-01 1 sec' +"%Y-%m-%d %T %z"
1970-01-01 00:00:01 +0100
date -d '1970-01-01 946684800 sec' +"%Y-%m-%d %T %z"
2000-01-01 00:00:00 +0000

Convertir segundoa a HH:MM:SS

Para convertir segundos (por ejemplo timestamp) a un formato tipo HH:MM:SS (horas:minutos:segundos) podemos hacerlo:

date -d '1970-01-01 SEGUNDOS sec' +"%H:%M:%S"

Debemos sustituir SEGUNDOS por el número de segundos a convertir, por ejemplo, para convertir 73180 segundos:

date -d '1970-01-01 73180 sec' +"%H:%M:%S"
20:19:40

Errores

Cuidado con los ceros delante de las fechas. Por ejemplo si te encuentras con este error: current month is 08 it gives me this error. value too great for base (error token is "08"), revisa la forma de obtener las fechas. (NOTA: lo del guión es válido para cualquier parámetro de fecha y hora).

date "+%-m"
9
date "+%m"
09

Retro

Lugares

Redes

Sistemas

Varios