我需要在日期间隔之间创建一个天数列表。 例如,从2001-01-01到2009-12-31:
2001-01-01
2001-01-02
2001-01-03
..
2009-12-29
2009-12-30
2009-12-31
我知道怎么做但也许有人已经制作了一个剧本? 如果没有,我会制作这样一个剧本并上传,以便其他人在需要时不会浪费时间。
答案 0 :(得分:1)
我不知道来自GnuWin32的awk,但是如果函数" mktime"和" strftime"可用,您可以尝试以下代码:
BEGIN {
START_DATE="2001-02-01"
END_DATE="2001-03-05"
S2=START_DATE
gsub("-"," ",S2)
T=mktime(S2 " 01 00 00")
if (T<0)
printf("%s is invalid.\n",START_DATE) >> "/dev/stderr"
else
{
for(S=START_DATE; END_DATE>S ;T+=86440) print S=strftime("%F",T)
}
}
关键是将开始日期转换为一个数字,表示自纪元以来的秒数,加上86400秒(一天或24 x 60 x 60)并转换回ISO日期格式。
经过一些试验后,我意识到mktime()函数承认错误的日期是好的(例如,2000-14-03)。
祝你好运