首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在python中计算任意给定年份每个季度的周数

如何在python中计算任意给定年份每个季度的周数
EN

Stack Overflow用户
提问于 2021-07-27 14:36:33
回答 1查看 42关注 0票数 0
代码语言:javascript
复制
def first_day_quarter_f(our_date):

    quarter = our_date.quarter
    quarter_start_date= datetime(our_date.year, 3* quarter -2, 1)

    return quarter_start_date


def days_in_between_f(our_date):

    quarter_start_date=first_day_quarter_f(our_date)

    delta=our_date-quarter_start_date
    days=delta.days+1

    return days


def first_day_name_f(our_date):

    quarter_start_date=first_day_quarter_f(our_date)
    first_day=quarter_start_date.strftime("%A")

    return first_day


def week_f(our_date):

    days=days_in_between_f(our_date)
    first_day=first_day_name_f(our_date)

    if first_day=='Monday':
        if days<7:
            week=1
        else:
            if days%7==0:
                week=math.floor(days/7)
            else:
                week=math.floor(days/7)+1

    elif first_day=='Tuesday': 
        if days<6:
            week=1
        else:
            days=days-6
            if days%7==0:
                week=1+math.floor(days/7)
            else:
                week=1+math.floor(days/7)+1

    elif first_day=='Wednesday':
        if days<5:
            week=1
        else:
            days=days-5
            if days%7==0:
                week=1+math.floor(days/7)
            else:
                week=1+math.floor(days/7)+1

    elif first_day=='Thursday':
        if days<4:
            week=1
        else:
            days=days-4
            if days%7==0:
                week=1+math.floor(days/7)
            else:
                week=1+math.floor(days/7)+1

    elif first_day=='Friday':
        if days<3:
            week=1
        else:
            days=days-3
            if days%7==0:
                week=1+math.floor(days/7)
            else:
                week=1+math.floor(days/7)+1

    elif first_day=='Saturday':
        if days<3:
            week=1
        else:
            days=days-2
            if days%7==0:
                week=1+math.floor(days/7)
            else:
                week=1+math.floor(days/7)+1

    else:
        if days<3:
            week=1
        else:
            days=days-1
            if days%7==0:
                week=1+math.floor(days/7)
            else:
                week=1+math.floor(days/7)+1

    return week

我试着得到季度的第一天,然后计算给定的日期和季度的第一天之间的差值,然后根据季度的第一天的名称计算周编号。有没有其他方法可以做到这一点?我们需要20-8-2020是在那个季度的哪一周?答案应该是第8周。

EN

回答 1

Stack Overflow用户

发布于 2021-07-27 22:58:11

代码语言:javascript
复制
from datetime import datetime
import math

date_format = "%m/%d/%Y"

a = datetime.strptime('1/1/2020', date_format)   # First day in the year, 1st January 2020

b = datetime.strptime('8/20/2020', date_format)  # Your date 20th August 2020

delta = b – a

num_days = delta.days

num_of_week = num_days / 7

week_in_quarter = num_of_week % 13

print(math.ceil(week_in_quarter))

输出:

8

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68540037

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档