GNU/Linux >> Tutoriales Linux >  >> Linux

¿Calcular rápidamente las diferencias de fechas?

A menudo quiero hacer algunos cálculos rápidos de fechas, como:

  • ¿Cuál es la diferencia entre estas dos fechas?
  • ¿Cuál es la fecha n semanas después de esta otra fecha?

Normalmente abro un calendario y cuento los días, pero creo que debería haber un programa/script que pueda usar para hacer este tipo de cálculos. ¿Alguna sugerencia?

Respuesta aceptada:

Las "n semanas después de una fecha" son fáciles con GNU date(1):

$ date -d 'now + 3 weeks'
Tue Dec  6 23:58:04 EST 2011
$ date -d 'Aug 4 + 3 weeks'
Thu Aug 25 00:00:00 EST 2011
$ date -d 'Jan 1 1982 + 11 weeks'
Fri Mar 19 00:00:00 EST 1982

No conozco una forma simple de calcular la diferencia entre dos fechas, pero puede ajustar un poco de lógica alrededor de la fecha (1) con una función de shell.

datediff() {
    d1=$(date -d "$1" +%s)
    d2=$(date -d "$2" +%s)
    echo $(( (d1 - d2) / 86400 )) days
}
$ datediff '1 Nov' '1 Aug'  # Note: answer should be 92 days but in my timezone, DST starts between the dates.
91 days

Intercambiar d1 y d2 si desea el cálculo de la fecha de otra manera, o sea un poco más elegante para que no importe. Además, en caso de que haya una transición de no horario de verano a horario de verano en el intervalo, uno de los días tendrá solo 23 horas de duración; puedes compensar agregando ½ día a la suma.

echo $(( (((d1-d2) > 0 ? (d1-d2) : (d2-d1)) + 43200) / 86400 )) days

Linux
  1. Gestión de políticas de contraseñas

  2. fecha:comando no encontrado

  3. calcule el espacio total en disco utilizado por archivos de más de 180 días usando find

  4. restar días de una fecha en bash

  5. Linux runasdate análogo

pfSense vs. Sophos:Las principales diferencias

Ansible vs Kubernetes:comprensión de las diferencias

Comando de fecha en Linux

7 ejemplos de comando de fecha en Linux

Ubuntu 22.10 Nombre en clave y fecha de lanzamiento

Bash:calcula el tiempo transcurrido entre dos marcas de tiempo