如何在RRULE中指定每年1月的第4个工作日?
解决每年1月第4个工作日的RRULE规则问题
你需要的RRULE规则如下:
RRULE:FREQ=YEARLY;BYMONTH=1;BYDAY=MO,TU,WE,TH,FR;BYSETPOS=4;COUNT=2
参数说明:
FREQ=YEARLY:设置事件为年度重复BYMONTH=1:限定事件仅在1月发生BYDAY=MO,TU,WE,TH,FR:只筛选周一至周五的工作日BYSETPOS=4:从筛选出的当月工作日中取第4个日期COUNT=2:生成2个重复事件
结果验证:
- 2025年1月的工作日依次是1日(周三)、2日(周四)、3日(周五)、6日(周一),第4个工作日为1月6日,符合需求
- 2026年1月的工作日依次是1日(周四)、2日(周五)、5日(周一)、6日(周二),第4个工作日为1月6日,符合需求
之前使用BYMONTHDAY=4的问题在于,它直接指定1月4日这个固定日期,不会判断该日期是否为工作日,因此会出现落在周末的情况。而通过BYDAY限定工作日范围,再用BYSETPOS选取第4个,就能精准定位到你需要的日期。
内容的提问来源于stack exchange,提问作者joegreen
相关产品推荐
相关产品推荐

