求可返回月份内周数的Python代码(周起始为周一)
实现指定日期在当月的周数(周一为周起始)
可以利用Python内置的datetime模块实现该需求,核心思路是通过计算目标日期与当月第一天的天数差,结合当月第一天的星期数推导周数。以下是完整实现代码:
import datetime def get_month_week_number(year: int, month: int, day: int) -> int: # 创建目标日期对象 target_date = datetime.date(year, month, day) # 获取当月第一天 first_day_of_month = datetime.date(year, month, 1) # weekday() 返回0(周一)到6(周日)的整数,匹配周起始要求 first_day_weekday = first_day_of_month.weekday() # 计算目标日期与当月第一天的天数差 days_diff = (target_date - first_day_of_month).days # 补全第一天到周一的间隔天数后,按7天为一周划分,加1转为从1开始的周数 week_number = (days_diff + first_day_weekday) // 7 + 1 return week_number # 测试示例 if __name__ == "__main__": # 2022年11月2日,预期返回1 print(get_month_week_number(2022, 11, 2)) # 输出: 1 # 2022年11月7日(周一),预期返回2 print(get_month_week_number(2022, 11, 7)) # 输出: 2 # 2022年11月1日(周二),预期返回1 print(get_month_week_number(2022, 11, 1)) # 输出: 1
代码说明
datetime.date.weekday():返回值0对应周一,6对应周日,完全契合“周一为周起始”的规则。days_diff:获取目标日期与当月第一天的总天数间隔。- 周数计算逻辑:
(days_diff + first_day_weekday)补全了当月第一天到本周一的间隔天数,使整个时间跨度可以按7天为单位划分,整除7得到0起始的周索引,加1后转为日常使用的1起始周数。
内容的提问来源于stack exchange,提问作者Fahad Sheji
相关产品推荐
相关产品推荐

