Простой способ преобразовать HH:MM:SS (hours:minutes:seconds.split секунды) к секундам

Что состоит в том, чтобы преобразовать простой способ 00:20:40.28 (HH:MM:SS) к секундам со сценарием Bash?

Доли секунды могут быть отключены, это не важно.

27
задан codeforester 10 February 2017 в 00:18
поделиться

4 ответа

Попробуйте awk . Как бонус, вы можете сохранить секунды разделения.

echo "00:20:40.25" | awk -F: '{ print ($1 * 3600) + ($2 * 60) + $3 }'
48
ответ дан 28 November 2019 в 04:48
поделиться

Я не проверил это, но я думаю, что это то, как вы разделили строку. Сопровождается умножением на соответствующие суммы в течение нескольких часов и минут.

mytime=’00:20:40.28′
part1=${mytime%%:*}; rest=${mytime#*:}
part2=${rest%%:*}; rest=${rest#*:}
part3=${rest%%:*};
0
ответ дан 28 November 2019 в 04:48
поделиться

Попробуйте следующее:

T='00:20:40.28'
SavedIFS="$IFS"
IFS=":."
Time=($T)
Seconds=$((${Time[0]}*3600 + ${Time[1]}*60 + ${Time[2]})).${Time[3]}
IFS="$SavedIFS"

echo $Seconds

($ ) разбивает на основе разделителя ( IFS ).

$ { [ ]} возвращает элемент в .

$ (( <арифметическое выражение> )) выполняет арифметическое выражение.

Надеюсь, это поможет.

3
ответ дан 28 November 2019 в 04:48
поделиться

с оболочкой,

#!/bin/bash

d="00:20:40.28"
IFS=":"
set -- $d
hr=$(($1*3600))
min=$(($2*60))
sec=${3%.*}
echo "total secs: $((hr+min+sec))"
0
ответ дан 28 November 2019 в 04:48
поделиться