GNU/Linux >> Linux Esercitazione >  >> Linux

Calcola rapidamente le differenze di data?

Spesso voglio fare dei calcoli veloci sulla data, come:

  • Qual ​​è la differenza tra queste due date?
  • Qual ​​è la data n settimane dopo quest'altra data?

Di solito apro un calendario e conto i giorni, ma penso che dovrebbe esserci un programma/script che posso usare per fare questo tipo di calcoli. Qualche suggerimento?

Risposta accettata:

Le "n settimane dopo una data" sono facili 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

Non conosco un modo semplice per calcolare la differenza tra due date, ma puoi avvolgere un po' di logica intorno a date(1) con una funzione di 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

Scambia d1 e d2 se vuoi il calcolo della data nell'altro modo, o diventa un po 'più elaborato per non importare. Inoltre, nel caso in cui nell'intervallo vi sia una transizione da DST a DST, uno dei giorni durerà solo 23 ore; puoi compensare aggiungendo ½ giornata alla somma.

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

Linux
  1. Gestione delle politiche delle password

  2. date Esempi di comandi in Linux

  3. calcola lo spazio su disco totale utilizzato dai file più vecchi di 180 giorni usando find

  4. sottrarre giorni da una data in bash

  5. Analogo runasdate di Linux

pfSense vs Sophos:le principali differenze

Ansible vs Kubernetes:capire le differenze

Comando Data in Linux

7 Esempi di comando Date in Linux

Ubuntu 22.10 Nome in codice e data di rilascio

Calcola giorni dal 1/1/1970