GNU/Linux >> Tutoriales Linux >  >> Linux

Bash:calcula el tiempo transcurrido entre dos marcas de tiempo

Esto le dará la fecha en segundos (desde la época de UNIX)

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

Y esto le dará la fecha como una cadena legible de una cantidad de segundos

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

Entonces, todo lo que se necesita es convertir su fecha/marca de tiempo en un formato que GNU date puede entender, usar matemáticas para determinar la diferencia y generar el resultado

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"

No proporcionamos información sobre la zona horaria aquí, por lo que se asume la zona horaria local. Sus valores para los segundos de la fecha y hora probablemente serán diferentes a los míos. (Si sus valores son UTC, puede usar date --utc .)


Esto es fácil con datediff comando provisto en dateutils paquete.

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

Linux
  1. Establecer la fecha, la hora y la zona horaria en un servidor Linux

  2. Obtenga la hora actual en segundos desde la Época en Linux, Bash

  3. Imprimir fecha para el lunes de la semana actual (en bash)

  4. ¿Cómo obtengo la diferencia entre dos fechas en bash?

  5. ¿Cómo obtener la fecha/hora de creación del archivo en Bash/Debian?

Cómo obtener la fecha y hora actuales en Python

La diferencia entre los operadores Bash [[ Vs [ Vs ( Vs ((?)

¿Cómo extraer registros entre dos marcas de tiempo?

¿El indicador de hora no muestra la fecha/hora?

Encuentra archivos creados entre un rango de fechas

¿Cuál es la diferencia entre &> y >&en bash?