Вычтите две даты, используя Shell Scripting

Как я могу вычесть две даты в формате epoch, используя Shell Scripting. Я хочу выход в формате «Месяцы, дни, часы». Также он должен работать даже более 12 месяцев (так как я натолкнулся на несколько, которые были сброшены до 0 месяцев, если их было больше 12)

2 Solutions collect form web for “Вычтите две даты, используя Shell Scripting”

Попробуйте что-то вроде этого:

#!/bin/bash d1=`date -d 20140929 +%s` d2=`date -d 20001115 +%s` date --date=@$(($d1 - $d2)) +'%m months, %d days, %H hours' 

Вывод:

 11 months, 15 days, 02 hours 
 #!/bin/bash d=(60sec 60min 24hours 30days 12month 1000year) i=0 while [ $1 -ge ${d[i]%%[az]*} ] do set -- $(($1/${d[i]%%[az]*})) $(($1%${d[i]%%[az]*})) ${d[i]##*[0-9]} ${*:2} ((i++)) done echo $1 ${d[i]##*[0-9]} ${*:2} 
Interesting Posts

Включает ли vi в конце файла новую строку (LF)?

Ubuntu 18.4 LTS, приложения Snap не запускаются

Захват вывода команды bash, анализ и сохранение в разные переменные bash

Перемещение папок использовало неправильный синтаксис и потеряло их

Почему “ IFS = read` используется так часто, а не `IFS =; в то время как читать..`?

Использование переменной внутри последовательности команд в bash для дополнения существующей строки – синтаксическая ошибка или ошибочный дизайн?

Создание NAT из loopback на удаленный сервер

Функция владения групповыми и групповыми правами

Как сделать gnome 3 'Type to search' искать больше мест?

Что такое 'apt-get' equvalent 'aptitude keep-all'?

Установка и решение зависимостей в автономном режиме для старой версии пакета

Форматировать жесткий диск Windows (NTFS) на Ubuntu с помощью командной строки

Удаление цветовых кодов из вывода

Почему мой вентилятор для ноутбука никогда не вращается?

Как использовать команду sed для изменения записи файла в строке в сценарии оболочки?

Linux и Unix - лучшая ОС в мире.