Comando Date


Comando Date
Información sobre la plantilla
Concepto:Permite hacer

Comando Arp. Comando que devuelve la fecha y hora.

Descripción

Potente y sofisticado comando que devuelve la fecha y hora del sistema, y bien utilizado proporciona varias opciones muy útiles no solo de manejo de fechas sino también para una parte medular del control de respaldos automatizados, que es precisamente la del empaquetado de los archivos que se respaldan, bajo archivos que obtienen su nombre a partir de este comando.


Sintaxis

Parámetros del comando date

  • Date sin argumentos

#> date lo cual da como salida: Tue Sep 17 14:34:16 BOT 2013

El primer campo representa el día de la semana, el segundo el mes, el día del mes, hora, minutos y segundos concecutivamente, BOT es la zona horaria y a continuación el año.

  • Para establecer entonces la fecha al 20 de Julio del 2007 a las 8:05 de la noche:

#> date 0720200507 vie jul 20 20:05:00 CDT 2007

Siempre se usará el formato de 24 horas y dos dígitos en los campos.

  • Para establecer la fecha al 1 de enero de 1998 a las 12 del día con 45 segundos:

#> date 010112001998.45 jue ene 1 12:00:45 CST 1998

los campos obligatarios son el mes, el día, la hora y minutos, los demás son opcionales.

Opción "-d" (trabajando con elementos relativos)

Obteniendo resultados de fechas en el pasado o presente, con la opción "-d":

#> date -d "tomorrow" lun jun 25 19:55:28 CDT 2007 #> date -d "yesterday" sáb jun 23 19:55:36 CDT 2007

dentro de las comillas " ", es posible utilizar una combinación de las siguientes palabras: (todas en inglés)

días de la semana (palabra completa o abreviación de tres letras), meses, next, ago, last, year, month, week, day, hour, minute, second, indicadores de zonas horarias, números, el símbolo +, el símbolo -

Si por ejemplo, se quisiera saber que día será dentro de 6 semanas:

#> date -d "6 weeks" dom ago 5 20:25:08 CDT 2007

O lo contrario en el pasado con "ago", que día fue hace 6 semanas:

#> date -d "6 weeks ago" dom may 13 20:26:46 CDT 2007

Permite conocer fechas pasadas o futuras, todas calculadas a partir de la hora y fecha en que se ejecute el comando: (en este caso el 24 jun 2007 20:40 aproximadamente:

#> date -d "next friday" vie jun 29 00:00:00 CDT 2007 #> date -d "last friday" vie jun 22 00:00:00 CDT 2007 #> date -d "2 months 1 week ago" vie ago 17 20:33:19 CDT 2007 #> date -d "1 year 3 months 2 weeks 3 days 10 hours 25 minutes 5 seconds" dom oct 12 06:59:09 CDT 2008 #> date -d "January 4" jue ene 4 00:00:00 CST 2007 #> date -d "July 20 2020" lun jul 20 00:00:00 CDT 2020 #> date -d "72 hours ago" jue jun 21 20:47:01 CDT 2007 #> date -d "50 days ago" sáb may 5 20:47:41 CDT 2007 #>date -d "+5 hours" lun jun 25 01:58:07 CDT 2007 #> date -d "-5 days" mar jun 19 20:58:56 CDT 2007

Formateo de la salida

Una de las opciones más interesante y útiles de date es la opción de formato de la salida, que se indica con el signo "+" seguido de una o màs literales de formato, que se indican con "%". Por ejemplo: %a indica el día de la semana abreviado, %B el nombre completo del mes, etc. Con unos cuantos ejemplos se entenderá la idea:

#> date dom jun 24 22:01:28 CDT 2007 #> date +%a dom #> date +%A domingo #> date +%B%A juniodomingo #> date +%B-%A junio-domingo #> date +%B-%A-%d junio-domingo-24 #> date +%B-%A-%d-%Y junio-domingo-24-2007 #> date +%B/%A/%d/%y junio/domingo/24/07 #> date +%d%m%y 240607 #> date +%d %m %y date: extra operand `%m' Try `date --help' for more information. #> date +%d\ %m\ %y 24 06 07

Cada literal, como se aprecia en los ejemplos, representa una parte de la fecha original y la salida es el formato que se indique con la combinación de literales que se haya usado.

Entre cada literal puede haber o no, uno de tres símbolos de separaciòn que son: "-","_","/" solo esos, y si se observa el penúltimo ejemplo, si queremos separar las literales con un espacio, el resultado será un error, entonces es posible usar el caracter de escape "\" que nos permite indicar cualquier caracter de separación entre literales.

Si se desea una salida mas elaborada como: "La fecha es: domingo 24 de junio del 2007" se indica entonces todo el formato entre comillas simples :

#> date +'La fecha es: %A %d de %B del %Y' La fecha es: domingo 24 de junio del 2007

Sumar y restar años, días o meses a la fecha actual

El comando date, a través del parámetro -d, --date=STRING permite mostrar y calcular la fecha distinta a la actual a partir de la suma o resta de X años, meses, días, minutos o segundos. Esto es útil cuando queremos por ejemplo añadir o restar 7 días a la fecha actual. Vamos a ver unos cuantos ejemplos:

  • Sumar 7 días a la fecha actual y mostrarlo en formato estándar:

$ date --date='+7 day'

  • Restar 7 días a la fecha actual y mostrarlo en formato timestamp:

$ date +%s --date='-7 day'

  • Sumar un año a la fecha actual con formato de fecha y hora:

$ date +%c --date='+1 year'

  • Restar dos meses a la fecha actual:

$ date --date='-2 month'

Literales

Aquí se detalla los principales literales que se pueden usar para formatos de salida con date: %a Nombre abreviado del día de la semana
%A Nombre completo del día de la semana
%b Nombre abreviado del mes
%B Nombre completo del mes
%c fecha y hora
%C Dos primeros dígitos del año, ejemplo 20 de 2007
%d Día del mes con dos dígitos, ejemplo 01
%D Igual que indicar %m/%d/%y
%e Día del mes con uno o dos dígitos, ejemplo 1, 10
%F Fecha completa, igual que %Y-%m-%d
%h igual que %b
%H Hora en formato 24 horas con dos dígitos (00..23)
%I Hora en formato 12 horas con dos dígitos(01..12)
%j El día del año (001..366)
%k Hora en formato 24 horas con uno o dos dígitos(0..23)
%l Hora en formato 12 horas con uno o dos dígitos(1..12)
%m Mes con dos dígitos(01..12)
%M Minutos con dos dígitos (00..59)
%r Hora completa en formato de 12 horas (ejemplo 01:23:45)
%R Horas y minutos en formato de 24 horas, igual que %H:%M
%s Segundos transcurridos desde 01/Ene/1970 00:00:00 (fecha epoch)
%S Segundos con dos dígitos, (00..60)
%T Hora completa en formato de 24 horas (ejemplo 13:23:45)
%u Dia de la semana en número (1..7, 1 es lunes)
%U Número de la semana en el año, domingo primer día de la semana (00..53)
%V Número de la semana en el año, lunes primer día de la semana (01..53) Formato ISO
%w Día de la semana en número (0..6, 0 es domingo)
%W Número de la semana en el año, lunes primer día de la semana (00..53)
%y Últimos dos dígitos del año
%Y Año con cutro dígitos
%z Huso o zona horaria numérica
%Z Huso o zona horaria abreviación alfabética

Fuentes