计算某日期为当年的第几周(每周为星期天到星期六)

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

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值