Skip to content
15/04/2014 / X3MBoy

[bash-tip] Trabajando con fechas

Trabajar con fechas en una versión actual de bash es algo muy simple, el comando date de la mayoría de las distribuciones es bastante robusto (proveniente del paquete coreutils de GNU Project). Por ejemplo obtener la fecha del día previo al actual (ayer):

date -d=yesterday

Existen también formas de formatearlo según las necesidades, los parámetros se pueden leer el manual del comando (man date) pero los que yo más utilizo son los siguientes:

Parámetro Descripción
%d Día en formato dd (rellena el espacio con cero [0])
%m Mes en formato mm (rellena el espacio con cero [0])
%Y Año en formato yyyy
%D Fecha en formato americano (lo mismo que %m/%d/%y
%F Fecha completa (lo mismo que %y-%m-%d)
%y Últimos dos dígitos del año
%H Hora en  formato hh
%M Minutos en  formato mm
%S Segundos en  formato ss
%T Hora en  formato hh:mm:ss (lo mismo que %H:%M:%S)
%x Fecha en formato local

Para utilizar los parámetros se introduce un signo de suma “+” seguido de los parámetros, vale decir que lo que no es leído como un parámetro se imprime de manera literal, y el resultado es un string o cadena, esto para las asignaciones en scripts. Como pueden notar en la tabla, pueden ver la hora; es muy importante notar esto porque aunque existe el comando time, el mismo no es para mostrar la hora sino para mostrar el tiempo de ejecución de un comando o programa.

Ejemplos:

x3mboy@Liss ~ $ date +%d-%m-%Y
05-02-2015
x3mboy@Liss ~ $ date +%D
02/05/15
x3mboy@Liss ~ $ date +%F
2015-02-05
x3mboy@Liss ~ $ date +%T
10:37:06
x3mboy@Liss ~ $ date +%x
05/02/15
x3mboy@Liss ~ $ date +%D" "%T
02/05/15 10:37:09
Como pueden ver en el último ejemplo, si los parámetros van a estar separados por espacios en blanco, se debe colocar ese espacio entre comillas.

Personalmente utilizo mucho estos comandos en asignaciones de scripts, sobretodo cuando estoy trabajando con archivos que se generan diariamente, pero la razón original por la cual realicé este post es porque en versiones antiguas de bash no existe algo como la opción -d o el parámetro %x, es por ello que he tenido que aprender a manejar el comando date, pues algo que suponemos tan simple como calcular la fecha del día de ayer se vuelve algo un poco complicado. Les dejo este script que hice hace algunos años para trabajar en un BSD con el comando date, sirve para calcular el día de ayer:

https://gist.github.com/X3MBoy/e934c967eac98b6d9c86

Espero les sea de utilidad.

Be Free, Be Linux
X3MBoy

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: