如何在 gnu date bash 中查找特定月份中一周中特定日期(例如星期日)第 n 次出现的日期

问题描述 投票:0回答:1

我想使用 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的这个特定问题。

bash date gnu
1个回答
3
投票

可以从该月第一天的工作日

%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
© www.soinside.com 2019 - 2024. All rights reserved.