El comando date es un programa externo de bash que permite configurar o mostrar la fecha y hora del sistema. También proporciona varias opciones de formato. El comando date está instalado en todas las distribuciones de Linux por defecto.
$ which date $ type -a date

Escriba date en la terminal para mostrar la fecha y hora actual.
$ date

Cambiar la Fecha y Hora del Sistema Linux
Usando el comando date, se pueden modificar la fecha, hora y zona horaria del sistema y el cambio debe sincronizarse con el reloj de hardware.
$ date --set="Thu Nov 12 13:06:59 IST 2020" $ hwclock --systohc

Opciones de Formato
A good place to get the list of formatting options will be the man page.
$ man date
Vamos a ver algunas de las opciones de formato más comunes que utilizaremos.
- Para aplicar formato, use “+ seguido de “formateador“.
- Para obtener una lista de opciones de formato para GNU/LINUX, consulte la man page vinculada.
- Para obtener una lista de opciones de formato para BSD, consulte la man page vinculada.
Las dos partes importantes del comando date son el uso del formato +%
y la opción –date.
Ahora vamos a aplicar algo de formato en el comando date. Para aplicar formato, añade el signo más (+)
seguido de %formateador
como se muestra en los ejemplos.
Manejo de Fechas en Linux
Vamos a ver cómo utilizar formateadores relacionados con la fecha en un sencillo script de shell llamado ‘date.sh‘.
# PRINT YEAR,MONTH,DAY AND DATE... echo "We are in the year = $(date +%Y)" echo "We are in the year = $(date +%y)" # Difference between %Y and %y is %Y will print 4 digits while %y will print the last 2 digits of the year. echo "We are in the month = $(date +%m)" echo "We are in the month = $(date +%b)" echo "We are in the month = $(date +%B)" # Difference between %B and %b is, %B will print full month name while %b will print abbreviated month name. echo "Current Day of the month = $(date +%d)" echo "Current Day of the week = $(date +%A)" echo "Current Day of the week = $(date +%a)" # Difference between %A and %a is, %A will print full Weekday name while %a will print abbreviated weekday name. # Instead of formatting to get the date, we can use %D which will print the date as %m/%d/%y or %F which prints in %Y-%M-%d format. echo "Date using %D = $(date +%D)" echo "Date using %F = $(date +%F)"

Manejo de Tiempo en Linux
Vamos a ver cómo utilizar formateadores relacionados con el tiempo en un sencillo script de shell llamado ‘time.sh‘.
# PRINT HOURS, MINS, SECONDS, NANO SECONDS echo Hours = $(date +%H) echo Minutes = $(date +%M) echo Seconds = $(date +%S) echo Nanoseconds = $(date +%N) echo Epoch Time = $(date +%s) echo "current time = $(date +%H:%M:%S:%N)" # can also use %T which displays Time in HH:MM:SS format. echo "current time in 24 hour format = $(date +%T)" # can also use %r to display time in 12 hour format. echo "current time in 12 hour format = $(date +%r)"

Con la bandera –date o -d
Con la bandera --date
o -d
se puede pasar la entrada como cadena y el comando date sabe manejarla inteligentemente.
Vamos a ver algunos ejemplos para entender cómo funciona.
# Print yesterday's date and time. echo "Yesterday = $(date -d "Yesterday")" # Print Tomorrow date and time. echo "tomorrow = $(date -d "tomorrow")" # Find what is the date and time before 10 days from now. echo "Before 10 days = $(date -d "tomorrow -10 days")" # Find last month and next month echo "Last month = $(date -d "last month" "%B")" echo "Next month = $(date -d "next month" "%B")" # Find last year and next year echo "Last Year = $(date -d "last year" "+%Y")" echo "Next Year = $(date -d "next year" "+%Y")" # Forecast the weekday echo "2 days away from today and it comes on weekdays? = $(date -d "Today +2 days" "+%A")

Operaciones Comunes
calcular el número de días entre 2 fechas dadas.
$ echo $(( ( $(date -d "2020-11-10" "+%s") - $(date -d "2020-11-01" "+%s") ) / 86400))
Descubrir si el año dado es bisiesto o no.
$ for y in {2000..2020}; do date -d $y-02-29 &>/dev/null && echo $y is leap year; done

Asignar la salida del comando date a una variable.
$ TODAY=$(date +%Y-%m-%d) OR $ TODAY1=$(date +%F) $ echo $TODAY $ echo $TODAY1

Crear archivos de registro con la fecha añadida al nombre del archivo.
Añadir fecha y hora al crear archivos de registro, copias de seguridad o archivos de texto es una operación común que encontraremos con mayor frecuencia. Tomemos un ejemplo, para hacer una copia de seguridad, hemos creado un script de shell.
Este script realizará una copia de seguridad de 00:00 a 23:59 y está programado para ejecutarse diariamente a las 00:00 del día siguiente. Queremos crear archivos de registro con el formato de fecha de ayer.
CUSTOM_FORMAT=$(date --date "Yesterday" "+%d-%y-%H:%M") LOG_FILE=/var/log/custom_application/application_${CUSTOM_FORMAT}.log echo "Script started" >> ${LOG_FILE} ... CODE BLOCKS ... echo "Script completed" >> ${LOG_FILE}
Eso es todo para este artículo. En este artículo, hemos visto cómo usar la fecha y la hora de bash en Linux. Háganos saber sus comentarios.
Source:
https://www.tecmint.com/change-linux-system-date-and-time/