Получить разницу дат в секундах
user@server:~$ old_time=$(date +%s)
user@server:~$ new_time=$(date +%s)
user@server:~$ echo $old_time $new_time
1675929074 1675929084
user@server:~$ date -d @${old_time}
Чт фев 9 10:51:14 MSK 2023
user@server:~$ date -d @${new_time}
Чт фев 9 10:51:24 MSK 2023
user@server:~$ let diff_date=$new_time-$old_time
user@server:~$ echo $diff_date
10
Если разница укладывается в 24 часа, то секунды можно перевести в удобочитаемый вид
user@server:~$ date -u -d @${diff_date} +"%T"
00:00:10
Стоит обратить внимание на параметр -u, который определяет что зона у нас UTC, иначе ответ будет считать плюс текущую зону, т.е. в мое случае +3 часа
user@server:~$ date -d @${diff_date} +"%T"
03:00:10
А вот разницу мы ранее считали без параметра -u, но можно и с.
Если же разница более суток и нужен красивый вывод, то можно представить в следующем варианте
user@server:~$ date -u -d @${diff_date} +"%j day %T"
001 day 00:00:10
Или просто в часах:
user@server:~$ diff_time=15654
user@server:~$ hours=$(echo "scale=0; $diff_time/3600" | bc);
user@server:~$ minute=$(echo "scale=0; ($diff_time-($hours*3600))/60" | bc);
user@server:~$ sec=$(echo "$diff_time-($hours*3600)-($minute*60)" | bc);
user@server:~$ printf "%s:%0*d:%0*d\n" $hours 2 $minute 2 $sec
4:20:54
Комментариев нет:
Отправить комментарий