我想使用 bash 中的 gnu date 命令查找给定月份的第三个星期日的日期。
我知道从现在开始可以写这个来查找下周日:
date +%Y%m%d -d "next sunday"
(然后可以添加 n 周),但是在阅读手册页后,我不知道如何相对于特定日期执行此操作,例如喜欢
date +%Y%m%d -d "20221001+next sunday"
或者实际上
date +%Y%m%d -d "20221001+next sunday+2 weeks"
我发现这个特定问题在SO上有很多其他语言的答案,或者这个类似的问题对于bash中的gnu date,但不是使用gnu date的这个特定问题。
可以从该月第一天的工作日
%w
开始计算:
n=3 # The third
w=0 # Sunday (0=Sun .. 6=Sat)
ym=202411 # in November 24
d=$(((n-1)*7+(w-$(date +%w -d $ym'01')+7)%7+1))
echo $d # gives 17