GNU/Linux >> Linux Esercitazione >  >> Linux

Bash:calcola il tempo trascorso tra due timestamp

Questo ti darà la data in secondi (dall'epoca UNIX)

date --date '2017-08-17 04:00:01' +%s    # "1502938801"

E questo ti darà la data come una stringa leggibile da un numero di secondi

date --date '@1502938801'    # "17 Aug 2017 04:00:01"

Quindi tutto ciò che serve è convertire la tua data/timestamp in un formato che GNU date può capire, usare la matematica per determinare la differenza e produrre il risultato

datetime1=20170817040001
datetime2=20160312000101

seconds1=$(date --date "$(echo "$datetime1" | sed -nr 's/(....)(..)(..)(..)(..)(..)/\1-\2-\3 \4:\5:\6/p')" +%s)
seconds2=$(date --date "$(echo "$datetime2" | sed -nr 's/(....)(..)(..)(..)(..)(..)/\1-\2-\3 \4:\5:\6/p')" +%s)

delta=$((seconds1 - seconds2))
echo "$delta seconds"    # "45197940 seconds"

Non abbiamo fornito informazioni sul fuso orario qui, quindi presuppone il fuso orario locale. I tuoi valori per i secondi dal datetime saranno probabilmente diversi dai miei. (Se i tuoi valori sono UTC, puoi usare date --utc .)


Questo è facile con datediff comando fornito in dateutils pacchetto.

ddiff -i '%Y%m%d%H%M%S' 20170817040001 20160312000101

Linux
  1. Imposta la data, l'ora e il fuso orario su un server Linux

  2. Ottieni l'ora corrente in secondi da Epoch su Linux, Bash

  3. Stampa la data per il lunedì della settimana corrente (in bash)

  4. Come ottengo la differenza tra due date sotto bash

  5. Come ottenere la data/ora di creazione del file in Bash/Debian?

Due ottimi usi per il comando cp:scorciatoie Bash

Come ottenere la data e l'ora correnti in Python

L'indicatore dell'ora non mostra la data/l'ora?

Converti una data ISO in secondi dall'epoca in linux bash

Qual è la differenza tra l'esecuzione di uno script Bash e l'approvvigionamento?

Time il tempo di esecuzione di più comandi