Я хотел бы указать диапазон дат и numbe r (n) и перечислить все даты, происходящие с интервалом в n дней в этом диапазоне.
Например, если дата начала 22 апреля 2017 года, а дата окончания - 19 декабря 2017 года, я хочу напечатать даты с шагом 11 дней с 22 апреля 2017 года. Первая дата будет 3 мая 2017, следующий 14 мая 2017 года и так далее. В этом примере n = 11.
start="22 April 2017"
end=$(date +%s -d "19 December 2017")
i=0
while (($(date +%s -d "$start + $i days") < end))
do
date +%F -d "$start + $i days"
((i+=11))
done
GNU date позволяет использовать выражения типа <date> + <n> days. +%s - это отметка времени Unix и +F дата в YYYY-MM-DD.
Выход:
2017-04-22
2017-05-03
2017-05-14
2017-05-25
2017-06-05
2017-06-16
2017-06-27
2017-07-08
2017-07-19
2017-07-30
2017-08-10
2017-08-21
2017-09-01
2017-09-12
2017-09-23
2017-10-04
2017-10-15
2017-10-26
2017-11-06
2017-11-17
2017-11-28
2017-12-09
start="22 April 2017"
end=$(date +%s -d "19 December 2017")
i=0
while (($(date +%s -d "$start + $i days") < end))
do
date +%F -d "$start + $i days"
((i+=11))
done
GNU date позволяет использовать выражения типа <date> + <n> days. +%s - это отметка времени Unix и +F дата в YYYY-MM-DD.
Выход:
2017-04-22
2017-05-03
2017-05-14
2017-05-25
2017-06-05
2017-06-16
2017-06-27
2017-07-08
2017-07-19
2017-07-30
2017-08-10
2017-08-21
2017-09-01
2017-09-12
2017-09-23
2017-10-04
2017-10-15
2017-10-26
2017-11-06
2017-11-17
2017-11-28
2017-12-09
start="22 April 2017"
end=$(date +%s -d "19 December 2017")
i=0
while (($(date +%s -d "$start + $i days") < end))
do
date +%F -d "$start + $i days"
((i+=11))
done
GNU date позволяет использовать выражения типа <date> + <n> days. +%s - это отметка времени Unix и +F дата в YYYY-MM-DD.
Выход:
2017-04-22
2017-05-03
2017-05-14
2017-05-25
2017-06-05
2017-06-16
2017-06-27
2017-07-08
2017-07-19
2017-07-30
2017-08-10
2017-08-21
2017-09-01
2017-09-12
2017-09-23
2017-10-04
2017-10-15
2017-10-26
2017-11-06
2017-11-17
2017-11-28
2017-12-09