列出日期范围内每隔 n 天发生的日期

列出日期范围内每隔 n 天发生的日期

我想要提供一个日期范围和一个数字(n),并列出该范围内以 n 天为间隔发生的所有日期。

例如,如果开始日期是 2017 年 4 月 22 日,结束日期是 2017 年 12 月 19 日,我想从 2017 年 4 月 22 日开始以 11 天为步长打印日期。第一个日期是 2017 年 5 月 3 日,下一个日期是 2017 年 5 月 14 日,依此类推。在此示例中,n=11。

答案1

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

GNUdate 允许类似这样的表达式<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

相关内容