El comando de fecha muestra o establece la fecha del sistema. Se usa más comúnmente para imprimir la fecha y la hora en diferentes formatos y calcular fechas futuras y pasadas.
En este tutorial, cubriremos los conceptos básicos del comando date.
Usando el comando date de Linux
La sintaxis del comando date
es la siguiente:
date [OPTION]... [+FORMAT]
Para mostrar la hora y fecha actuales del sistema utilizando el formato predeterminado, invoque el comando sin ninguna opción:
date
La salida incluirá el día de la semana, mes, día del mes, hora, zona horaria y año:
Sat Jun 1 14:31:01 CEST 2019
Opciones de formato de fecha
La salida de date
puede formatearse con una secuencia de caracteres de control de formato precedidos por un signo +
. Los controles de formato comienzan con el %
símbolo y se sustituyen por sus valores.
date +"Year: %Y, Month: %m, Day: %d"
El personaje %Y
será reemplazado con el año, %m
con mes y %d
con el día del mes:
Year: 2019, Month: 06, Day: 02
Aquí hay otro ejemplo:
date "+DATE: %D%nTIME: %T"
DATE: 06/02/19
TIME: 01:47:04
A continuación se muestra una pequeña lista de algunos de los caracteres de formato más comunes:
%a
– Nombre abreviado corto del día de la semana de la localidad (por ejemplo, Mon)%A
– Nombre del día de la semana completo abreviado de la localidad (por ejemplo, lunes)%b
– Nombre abreviado del mes corto del local (por ejemplo, enero)%B
– Nombre del mes largo abreviado de la localidad (por ejemplo, enero)%d
– Día del mes (por ejemplo, 01)%H
– Hora (00..23)%I
– Hora (01..12)%j
– Día del año (001..366)%m
– Mes (01..12)%M
– Minuto (00..59)%S
– Segundo (00..60)%u
– Día de la semana (1..7)%Y
– Año completo (ej. 2019)
Para obtener una lista completa de todas las opciones de formato ejecutadas date --help
o man date
en su terminal.
Cadena de fecha
La opción -d
le permite operar en una fecha específica. Puede especificar la fecha como una cadena de fecha legible para las personas, como a continuación:
date -d "2010-02-07 12:10:53"
Sun Feb 7 12:10:53 CET 2010
Usando el formato personalizado:
date -d '16 Dec 1974' +'%A, %d %B %Y'
Monday, 16 December 1974
La cadena de fecha también puede aceptar valores como «mañana», «viernes», «viernes pasado», «viernes próximo», «mes próximo», «la próxima semana» ..etc.
date -d "last week"
Sat May 25 14:31:42 CEST 2019
También puede usar la opción de cadena de fecha para mostrar su hora local para diferentes zonas horarias. Por ejemplo, para mostrar la hora local a las 6:30 AM del próximo lunes en la costa este de Australia, debe escribir:
date -d 'TZ="Australia/Sydney" 06:30 next Monday'
Sun Jun 2 22:30:00 CEST 2019
Anular la zona horaria
El comando date
utiliza la zona horaria predeterminada del sistema . Para usar una zona horaria diferente, establezca la variable de entorno TZ
en la zona horaria deseada.
Por ejemplo, para mostrar la hora de Melbourne, Aus, debe escribir:
TZ='Australia/Melbourne' date
Sat Jun 1 22:35:10 AEST 2019
Para enumerar todas las zonas horarias disponibles, puede listar los archivos en el directorio /usr/share/zoneinfo
o usar el comando timedatectl list-timezones
.
Convertidor de época
El comando date
se puede utilizar como un convertidor de época. Época, o marcas de tiempo de Unix, es el número de segundos que han transcurrido desde el 1 de enero de 1970 a las 00:00:00 UTC.
Para imprimir el número de segundos desde la época hasta el día actual, use el control %s
de formato:
date +%s
1559393792
Para convertir segundos desde la época hasta la fecha, establezca los segundos como una cadena de fecha con el prefijo @
:
date -d @1234567890
Sat Feb 14 00:31:30 CET 2009
Usando la fecha con otros comandos
El comando date
se usa con más frecuencia para crear nombres de archivos que contienen la hora y fecha actuales.
El siguiente comando creará un archivo de copia de seguridad Mysql en el siguiente formato database_name-20190601.sql
mysqldump database_name > database_name-$(date +%Y%m%d).sql
También puede utilizar el comando date
en sus scripts de shell. En el siguiente ejemplo, asignamos la salida date
a la variable date_now
:
date_now=$(date "+%F-%H-%M-%S")
echo $date_now
2019-06-01-15-02-27
Mostrar la hora de la última modificación de un archivo
El comando date
con la opción -r
muestra la última hora de modificación de un archivo. Por ejemplo:
date -r /etc/hosts
Tue Jul 24 11:11:48 CEST 2018
Si desea modificar la marca de tiempo del archivo, use el comando touch
.
Establecer la hora y fecha del sistema
date
Por lo general, no se recomienda configurar la fecha y la hora del sistema manualmente con el comando, ya que en la mayoría de las distribuciones de Linux, el reloj del sistema se sincroniza utilizando los servicios ntp
systemd-timesyncd
Sin embargo, si desea configurar el reloj del sistema manualmente, puede utilizar la opción --set=
. Por ejemplo, si desea establecer la fecha y la hora a las 5:30 pm del 1 de junio de 2019, debe escribir:
date --set="20190601 17:30"
A estas alturas ya debería tener una buena comprensión de cómo usar el comando de fecha de Linux.