我想要提供一个日期范围和一个数字(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