Быстрое и очень грязное исправление, которое можно использовать в скриптах (быстрое и быстрое):
Эта функция gendates
создает список допустимых дат между двумя датами в формате ГГГГммдд (самый старый первый).
function gendates { for dd in $(seq -w $1 $2) ; do date -d $dd +%Y%m%d 2>/dev/null ; done ; }
Я использую эту функцию для нескольких целей, связанных с файлами журналов, например, для генерации списка имен файлов журналов для проверки [1]. И это удобно для подсчета разницы в днях:
echo "$(gendates YYYYmmdd YYYYmmdd)" | wc -l
ГГГГммдд, конечно, должны быть даты. Он работает только в том случае, если 1 долл. Является более ранней датой, чем 2 долл., И медленен при больших различиях в датах, но в течение нескольких лет и для использования в специальных сценариях это довольно удобно.
И если у вас установлен MySQl или аналогичный, есть очень быстрый вариант:
mysql -BNe "SELECT DATEDIFF($1,$2) AS DiffDate ;" | tr -d -
Последний tr
позволяет вам вводить даты в любом порядке (MySQL иначе выдает '-', если первая дата раньше, чем вторая)
[1] Причиной создания списка дат является то, что с его помощью я могу сгенерировать имена файлов журналов в следующем формате: YYYYmmdd.log.gz. Я мог бы сделать это, используя звездочку или $ (ls), но это намного медленнее, чем просто предоставление списка со строками.