You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用GNU date命令在Bash中查找指定月份内第N个特定星期几的日期

如何使用GNU date命令在Bash中查找指定月份内第N个特定星期几的日期

嘿,这个问题我刚好研究过,GNU date其实有非常便捷的内置语法来解决这个问题,不用手动算几周那么麻烦~

你之前尝试的20221001+next sunday格式不对,GNU date的相对偏移需要用空格和日期分隔开,而且它直接支持识别“第N个星期几”的表述,完全不用自己累加周数。

核心用法

要查找指定月份的第N个特定星期几,通用命令格式如下:

date +%Y%m%d -d "<年份>-<月份> <第N个> <星期几>"

或者也可以基于当月第一天来写,效果完全一样:

date +%Y%m%d -d "<年份>-<月份>-01 + <第N个> <星期几>"

这里的<第N个>可以是first、second、third、fourth、fifth,甚至last(用来找当月最后一个指定星期几)。

实际例子

比如你要找2022年10月的第三个周日,直接执行:

date +%Y%m%d -d "2022-10 third sunday"

执行后会输出20221016,这正是2022年10月的第三个周日。

再举几个其他场景的例子:

  • 2023年3月的第二个周五:
    date +%Y%m%d -d "2023-03 second friday"
    
  • 2024年2月的最后一个周四:
    date +%Y%m%d -d "2024-02 last thursday"
    

为什么你的之前的方法可能出错

你之前想的20221001+next sunday+2 weeks这种写法,会存在一个问题:如果当月1号本身就是周日,那next sunday会是8号,再加两周就是22号,但实际上当月第三个周日应该是15号。而用GNU date的<Nth> <weekday>语法,它会自动识别当月内的第N个目标星期几,不管当月第一天是星期几,结果更准确。

备注:内容来源于stack exchange,提问作者ClimateUnboxed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.15 11:55:31