Вычислить разницу в миллисекундах между 2 заданными временными интервалами

#bash #shell

#bash #оболочка

Вопрос:

У меня есть журнал, и в этом журнале у меня есть это время: 14:03:26,599 14:03:26,788 14:03:26,924 14:03:27,125

Как вычислить разницу между двумя этими временами в миллисекундах? Я попытался:

 LOGTIME1=14:03:26,599
LOGTIME2=14:03:26,788
CONVERT1=$(date  d $LOGTIME1  %s.%N)
CONVERT2=$(date  d $LOGTIME1  %s.%N)
TOTAL=$(CONVERT2 - CONVERT1)
 

Но у меня это не получается.
Я получаю сообщение об ошибке: дата: дополнительный операнд ‘14:03:26,599’
Я верю, потому что «,» и 599…
Но я не знаю, как с этим справиться.

Комментарии:

1. Это -d не d так . Кроме того, вы, вероятно, имели в виду TOTAL=$((...)) вместо $(...) .

2. тнк, я это исправлю

Ответ №1:

Вы можете использовать:

 bc -l <<< "$(date -d "$LOGTIME2" ' %s.%N') - $(date -d "$LOGTIME1" ' %s.%N')"

.189000000
 

Обратите внимание, что вы должны использовать -d in date и использовать bc -l для арифметики с плавающей запятой, а bash выполняет только целочисленную арифметику.