如何获取当前周的全部日期及判断日期是否属于当前周
周度故障统计日期处理方案
1. 获取当前周的全部日期
首先需要明确周起始规则:国内默认周一为一周第一天,欧美地区默认周日为一周第一天,可根据业务规则调整。
以下为Python实现示例:
import datetime def get_current_week_dates(week_start=0): # week_start=0 代表周一为周首,week_start=6代表周日为周首 today = datetime.date.today() # 计算周首日期 start_date = today - datetime.timedelta(days=today.weekday() - week_start) # 生成一周7天的日期列表 week_dates = [start_date + datetime.timedelta(days=i) for i in range(7)] # 统一转为%Y-%m-%d格式字符串,方便和文件中存储的日期比对 return [d.strftime("%Y-%m-%d") for d in week_dates] # 调用示例(周一为周首) current_week = get_current_week_dates()
如果是其他编程语言,核心逻辑一致:先取当前日期,计算距离周首的天数差得到周首日,再累加7天得到整周日期。
2. 判断任意日期是否属于当前周
推荐用「年份+周数匹配」的方案,自动处理跨年周的边界问题,逻辑更稳定。
Python实现示例:
import datetime def is_date_in_current_week(target_date_str, date_format="%Y-%m-%d"): # 解析目标日期 target_date = datetime.datetime.strptime(target_date_str, date_format).date() today = datetime.date.today() # 获取当前日期的年、周数 current_year, current_week, _ = today.isocalendar() # 获取目标日期的年、周数 target_year, target_week, _ = target_date.isocalendar() # 年和周数同时匹配则属于当前周 return current_year == target_year and current_week == target_week # 调用示例 print(is_date_in_current_week("2024-05-20"))
如果需要自定义周首规则,可以替换为范围判断逻辑:先获取当前周的起始、结束日期,再判断目标日期是否在[start_date, end_date]闭区间内即可。
注意事项
- 处理跨年周时,不要直接用月份/自然日判断,避免出现12月31日属于下一年第一周、1月1日属于上一年最后一周的统计错误
- 要和故障数据文件里的日期格式保持一致,避免字符串比对不匹配的问题
内容的提问来源于stack exchange,提问作者user12252991
相关产品推荐
相关产品推荐

