繁体   English   中英

如何使用Python确定从星期日开始的一年中的哪一周?

[英]How to determine the week of year starting on sunday using Python?

我需要从星期日开始获得一年中的一周。 默认的 ISO 周从周一开始,但我的要求是将周日作为一周的开始。

例如2019-01-06星期日,应该是第 2 周。

我确实尝试过

t1.strftime("%U")

但问题是它在新年的第一个星期日之前的所有日子都返回 0,并从一年的第一个星期日开始计算周数。

我在这里先向您的帮助表示感谢。

有点 hacky,但这将完成这项工作:

import datetime


def week(t):
    if datetime.datetime(t.year, 1, 1).weekday() == 6:
        # The year started with a Sunday.
        incr = 0
    else:
        incr = 1
    return int(t.strftime("%U")) + incr


ls = [datetime.datetime(2019, 1, 5), datetime.datetime(2019, 1, 6),
      datetime.datetime(2019, 8, 3), datetime.datetime(2019, 8, 4),
      datetime.datetime(2017, 1, 1)]

for t in ls:
    print("day:", t.strftime("%Y-%m-%d %a,"), "week:", week(t))

输出:

 day: 2019-01-05 Sat, week: 1 day: 2019-01-06 Sun, week: 2 day: 2019-08-03 Sat, week: 31 day: 2019-08-04 Sun, week: 32 day: 2017-01-01 Sun, week: 1

共享我的代码以实现与您的略有不同的实现。 我考虑到一年的第一天可能属于去年的一周。 虽然,您可以很好地根据需要调整此代码。

下面给出的代码段返回任何“given_date”的 year_wk 和
一周从任何 day_no 开始(在下面的代码中是 4,​​即星期五)

import math as mt
import datetime as dt    

def get_first_date_year(year, day_no):
    d1 = dt.date(year, 1, 1)
    return d1 + dt.timedelta((day_no - d1.weekday())%7)

def get_yearwk_from_date(given_date, day_no):
    first_date = get_first_date_year(given_date.year, day_no)
    if (given_date < first_date):
        first_date = get_first_date_year(given_date.year-1, day_no)
    return first_date.year*100 + mt.ceil(((given_date - first_date).days+1)/7)

FRIDAY = 4
for i in range(20):
    given_date = dt.date(2018, 12, 23) + dt.timedelta(days=i)
    year_wk = get_yearwk_from_date(given_date, FRIDAY)
    print("Date: "+str(given_date)+", YearWeek: "+str(year_wk))

输出:

日期:2018-12-23,年周:201851
日期:2018-12-24,年周:201851
日期:2018-12-25,年周:201851
日期:2018-12-26,年周:201851
日期:2018-12-27,年周:201851
日期:2018-12-28,年周:201852
日期:2018-12-29,年周:201852
日期:2018-12-30,年周:201852
日期:2018-12-31,年周:201852
日期:2019-01-01,年周:201852
日期:2019-01-02,年周:201852
日期:2019-01-03,年周:201852
日期:2019-01-04,年周:201901
日期:2019-01-05,年周:201901
日期:2019-01-06,年周:201901
日期:2019-01-07,年周:201901
日期:2019-01-08,年周:201901
日期:2019-01-09,年周:201901
日期:2019-01-10,年周:201901
日期:2019-01-11,年周:201902

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM