簡體   English   中英

如何查找一年python中每月第一周的所有周數

[英]How to find all week numbers that are first week of month in a year python

我想創建一個每周第一周的周日活動。

這就是我正在為特定的周數做的事情,這是june第一周獲得日期:

from datetime import datetime
myDate = "2017 22 0"
# here `2017` is year, `22` is week number and `0` =sunday is week day
datetime.strptime(myDate, "%Y %W %w")

#output...
datetime.datetime(2017, 6, 4, 0, 0)

因此,我需要一個月份第一周的所有周數的列表,以便我可以循環並獲得所需的日期。

添加更多信息

我想要一個返回周數列表的方法,這個月號是第一周,第一周表示周有第一個星期日。

def get_week_number(year=2017, day=0):
   #day 0 means sunday
   ...
   ...
   return [1, 5, 9, 13, 18, 22, ...]  

(編輯,因工作日編號錯誤)

>>> import datetime
>>> june1 = datetime.datetime(2017,6,1)
>>> june1
datetime.datetime(2017, 6, 1, 0, 0)
>>> june1_weekday = june1.weekday()
>>> if june1_weekday < 6:  # 6 indicates Sunday
        first_sunday_in_june = june1 + datetime.timedelta(days=6-june1_weekday)
else:
        first_sunday_in_june = june1


>>> print(first_sunday_in_june)
2017-06-04 00:00:00

假設您需要ISO周數,則可以使用isocalendar()方法。 這給出了一個元組(year, weeknumber, weekday) 這使用了周從星期一開始的約定,一年的第一周是第一周,一年中至少有四天(換句話說,第一個星期四的一周)。

>>> first_sunday_in_june.isocalendar()
(2017, 22, 7)

如果您有另一個年度第一天或第一周的約定,您將必須自己釀造功能以獲得周數。

在幾個月的循環中使用上述方法,您可以使用周數創建所需的列表。

我已經經歷了幾個月完成一個循環,然后得到的第一個星期日(開始於一個月的1 和移動到第二天,直到周日被發現),然后得到了一周的年中發現的日期:

from datetime import datetime
from datetime import date

# dayofweek: Sunday=0, Monday=1 and so on
def get_week_number(year=2017, dayofweek=0):
    weeks = []

    for month in range(1, 13):
        # get first Sunday of month
        d = date(year, month, 1)
        while(d.weekday() != dayofweek):
            d = d.replace(day=d.day + 1)

        # isocalendar()[1] is the week-of-year field
        weeks.append(d.isocalendar()[1])

    return weeks

print(get_week_number(2017, 0))

但結果與您的預期不同:

[1, 6, 10, 14, 18, 23, 27, 32, 36, 40, 45, 49]

我也試過了weeks.append(int(d.strftime("%W")))但它給出了相同的結果 - 我使用的是Python 3.5.2, 一周被定義為

ISO年份包括52或53整周,其中一周從星期一開始,到星期日結束。 ISO年的第一周是包含星期四的第一個(格里高利)日歷周。 這稱為第1周,該星期四的ISO年份與其公歷年相同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM