如何计算指定月份的首个周一或对应上月最后一个周一
给定月份首个周一计算规则及VB实现
计算规则
需求为计算给定月份对应的首个周一,若符合规则时该周一为上月最后一个周一也需正确返回,具体判断逻辑如下:
- 当月首日为周一至周三时,首个周一为当周的周一
- 当月首日为周四至周日时,首个周一为下一周的周一
验证示例
- 2021年8月:当月首日为周日(晚于周三),首个周一为2021年8月2日
- 2021年9月:当月首日为周三,首个周一为2021年8月30日
- 2021年10月:当月首日为周五,首个周一为2021年10月4日
VB实现代码
Public Function FirstMonday(myDate As Date) As Date Dim d As Date, w As Long d = DateSerial(Year(myDate), month(myDate), 1) w = Weekday(d, vbMonday) FirstMonday = d + IIf(w <> 1, 8 - w, 0) End Function
内容的提问来源于stack exchange,提问作者Jonno Edge
相关产品推荐
相关产品推荐

