实例需求:某公司有两种不同排班计划
- MWF: 周一周三周五-周一周三周五…
- TTS: 周二周四周六-周二周四周六…
但是数据表中有时会缺少部分日期,为了便于汇总多个部分的数据,现在需要将日期补全,对于补充的日期标记为黄色。
先讨论一些如何计算不同排班计划中的下一个有效时间。
- 使用
Weekday
函数可以返回代表星期x的数字,这个函数支持多种方案,例如:周一开始,周日开始等等。本代码使用周一作为日历周的开始日,即:周一至周日,返回值为1~7。 - 下表中“日期间隔”列统计每个日期和之前相邻日期的间隔天数,可以看出两种排班计划都是按2-2-3的模式再重复。
- 对于TTS排班,除了周二之外,weekday 返回值是
日期间隔
的两倍 - 对于MWF排班,只需要将 weekday 返回值加一,就可用按照TTS排班处理
MWF | Weekday | 日期间隔 | TTS | Weekday | 日期间隔 |
---|---|---|---|---|---|
2024/1/1 | 1 | 2 | 2024/1/2 | 2 | 2 |
2024/1/3 | 3 | 2 | 2024/1/4 | 4 | 2 |