Список дат, происходящих с интервалом в n дней в пределах диапазона дат [закрыт]

Я хотел бы указать диапазон дат и numbe r (n) и перечислить все даты, происходящие с интервалом в n дней в этом диапазоне.

Например, если дата начала 22 апреля 2017 года, а дата окончания - 19 декабря 2017 года, я хочу напечатать даты с шагом 11 дней с 22 апреля 2017 года. Первая дата будет 3 мая 2017, следующий 14 мая 2017 года и так далее. В этом примере n = 11.

0
задан 23 August 2017 в 19:16

3 ответа

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
2
ответ дан 22 May 2018 в 19:14
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
2
ответ дан 18 July 2018 в 08: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
2
ответ дан 24 July 2018 в 19:01

Другие вопросы по тегам:

Похожие вопросы: