Cómo convertir una fecha HH: MM: SS en la segunda con bash?

Sabiendo que esta es una fecha que me he recuperado en un archivo, así que no puedo tomarlo en otro formato.

Tengo dos variables $DateStart y $DateEnd y me gustaría que la diferencia entre ambos.

OriginalEl autor MaxGeneGrim | 2013-05-07

4 Comentarios

  1. 5
    date +%s

    devuelve el datetime actual en segundos desde 1970-01-01 00:00:00 UTC

    si usted desea conseguir un determinado datetime en segundos desde 1970-01-01 00:00:00 UTC, por ejemplo:

    kent$  date -d"2008-08-08 20:20:20" +%s
    1218219620

    para obtener diff en segundos, usted acaba de conseguir las dos fechas en cuestión de segundos, y hacer un s1-s2

    Tenga en cuenta que si las marcas de tiempo no contienen fechas, date todavía debe ser suministrado con ellos. De lo contrario, si sólo a veces se pasan, date asumirá hoy y los tiempos calculados en ambos lados de la medianoche tenga más de 24 horas de diferencia entre ellos.
    Muchas gracias, es que funciona, yo start=$(date -d”$DateStart” +%s) y final=$(date -d”$DateEnd” +%s) y después de un tiempo=$(fin-inicio).

    OriginalEl autor Kent

  2. 3

    En un ordenador Mac, puede convertir una fecha a otra fecha con una combinación de la -j y -f opción:

    $ date -j -f '%Y-%m-%d %H:%M:%S' "2016-02-22 20:22:14" '+%s'
    1456168934

    Donde -j suprime cambiar el reloj del sistema,
    -f <fmt> da el formato a utilizar para el análisis de la fecha dada,
    "2016-02-22 20:22:14" es la fecha de entrada y
    +<fmt> es el formato de salida.

    OriginalEl autor Erik van Oosten

  3. 2

    Suponiendo que el tiempo en HH:MM:SS formato es variable time_hhmmss y el tiempo en
    segundos debe ser almacenado en time_s:

    IFS=: read -r h m s <<<"$time_hhmmss"
    time_s=$(((h * 60 + m) * 60 + s))

    OriginalEl autor spbnick

  4. 0

    Tratar de utilizar la solución con sed+awk:

    echo $DateStart | sed 's/:\|-//g;' | awk '{print $4" "$3" "$2" "$1}' | awk '{print $1+$2*60+$3*3600+$4*86400}'
    echo $DateEnd | sed 's/:\|-//g;' | awk '{print $4" "$3" "$2" "$1}' | awk '{print $1+$2*60+$3*3600+$4*86400}'

    divide la cadena con la sed, a continuación, invierte los números al revés (“DD hh mm ss” -> “ss mm DD hh”) y se calcula con awk.
    Funciona incluso agregar días: [[DD]hh:]mm:ss, por ejemplo:

           34:56
        12:34:56
    123-12:34:56

    OriginalEl autor bolD

Dejar respuesta

Please enter your comment!
Please enter your name here