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