date – Calcule rápidamente las diferencias de fecha

Pregunta:

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:

Las "n semanas después de una fecha" son fáciles con la fecha GNU (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 sencilla 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

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

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

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım