Fechas y marcas de tiempo en UNIX/Linux

Niraj Menon 22 marzo 2022
  1. Obtener la fecha y hora actual en Linux
  2. Hora UNIX
Fechas y marcas de tiempo en UNIX/Linux

La información de fecha y hora no es tan visible en la línea de comandos como lo sería con una versión gráfica de Linux, pero ciertamente podemos obtener esa información con el comando date.

Este tutorial explicará cómo usar el comando date para obtener, analizar, convertir fechas y horas e imprimirlas en diferentes formatos en Linux, asumiendo una línea de comando de shell Bash.

Obtener la fecha y hora actual en Linux

Como se muestra, ejecutar date nos da la fecha y hora actuales, con la zona horaria.

user@linux:~$ date
Tue 01 Jan 2022 12:00:00 AM +04

El formato de fecha y hora predeterminado será el de la zona horaria en la que se encuentre; en este caso, la salida de date es para un usuario cuya zona horaria es la hora estándar del Golfo, o GMT+04. Para imprimir la fecha y la hora en un formato diferente, como UTC o GMT, o yyyy/mm/dd o dd/mm/yyyy, puede especificar ese formato usando modificadores especiales de la siguiente manera.

# to print the current date in dd/mm/yyyy format
date +%d-%m-%Y
# to print the current date and time in UTC
date -u
# to print the date and/or time as per IETF RFC3349
date --rfc-3339=seconds
# to print the date and time within a custom string
date +"Today is %D and the time is %I:%M:%S"

Hora UNIX

En la mayoría de los sistemas UNIX, el tiempo actual se almacena como el tiempo transcurrido desde un momento particular para simplificar, manteniendo el tiempo como un número entero largo, llamado época UNIX. El momento universalmente aceptado para todos los sistemas UNIX es 1 de enero de 1970, 12:00:00 AM. Esto se denomina marca de tiempo UNIX y es reconocido por todos los sistemas UNIX/Linux modernos.

Por ejemplo, si deseamos encontrar la marca de tiempo UNIX del 1 de enero de 2022, podemos usar el comando date.

user@linux:~$ date -d"1 January 2022 12:00 AM" +%s
1640980800

date intenta analizar la cadena en busca de una fecha y hora formateadas (o, si no se especifica una marca de tiempo, asume que la hora es 12:00 a. m.) y luego imprime el formulario de marca de tiempo UNIX de la fecha y/u hora dada. 1640980800 es el número exacto de segundos que han transcurrido desde el 1 de enero de 1970, 12:00:00 AM.

También es posible lo contrario, por lo que tomamos una marca de tiempo UNIX y la convertimos en una representación de fecha. Para recuperar nuestra fecha original, podemos pasar la marca de tiempo de UNIX como se muestra para convertirla.

user@linux:~$ date -d @1640980800
Sat 01 Jan 2022 12:00:00 AM +04

Si lo deseamos, también podemos incluir otros parámetros para formatear la fecha de una manera específica, como UTC o GMT, como se explicó anteriormente.

Artículo relacionado - Linux Date