1、每周为星期天到星期六
2、每年开头几周按实际情况计算在上一年最后一周,还是计算在当年的第一周
def week(mydate):
"""
计算该日期为当年的第几周
每周为星期天到星期六
mydata: "2024/1/1"
return: 53
"""
myyear = mydate.split('/')[0]
firstDay = myyear + "/01/01"
dayOfWeek = int(datetime.strptime(firstDay, '%Y/%m/%d').strftime('%w')) # 获得 1月1日是星期几, 星期天到星期六分别为0-6
spendDay = 0 # 默认 1月1日 是星期天,属于上一个年度最后一周 ,与下一周周日相差0天
if dayOfWeek > 0: # 若1月1日不是星期天 ,则计算在上一年
spendDay = 7 - dayOfWeek - 1 # 比如星期四, 7-4-1=2 与下一周的星期天 相差2天(周五、周6)
lastYearLastDay = myyear + "/01/" + str(1 + spendDay) # 上一年最后一周周末(即星期六)的日期
elif dayOfWeek == 0: # 若 1月1日就是星期天
lastYearLastDay = str(int(myyear) - 1) + "/12/31" # 上一年最后一周周末(即星期六)的日期
# 计算时间差
d = math.ceil((datetime.strptime(mydate, "%Y/%m/%d").date() - datetime.strptime(lastYearLastDay, "%Y/%m/%d").date()).days)
print('d', d)
if d <= 0:
mydate_ = str(int(myyear)-1) + "/12/31"
week = self.week(mydate_) # 如果相差小于等于0 ,年初几天,为上一年度最后一周(第52周)
else:
week = math.ceil(d / 7)
return week