Как узнать, какое недельное число является текущим годом 16-го июня (wk24) с Python?
Думаю, date.isocalendar ()
будет ответом. В этой статье объясняется математика, лежащая в основе календаря ISO 8601. Посмотрите часть date.isocalendar () на странице datetime документации Python.
>>> dt = datetime.date(2010, 6, 16)
>>> wk = dt.isocalendar()[1]
24
.isocalendar () возвращает 3-кортеж с (год, номер недели, день недели). dt.isocalendar () [0]
возвращает год, dt.isocalendar () [1]
возвращает номер недели, dt.isocalendar () [2]
возвращает день недели. . Просто, насколько это возможно.
Неделя ISO, предложенная другими, хороша, но может не соответствовать вашим потребностям. Предполагается, что каждая неделя начинается с понедельника, что приводит к некоторым интересным аномалиям в начале и в конце года.
Если вы предпочитаете использовать определение, согласно которому неделя 1 всегда с 1 по 7 января, независимо от дня недели, используйте следующий вывод:
>>> testdate=datetime.datetime(2010,6,16)
>>> print(((testdate - datetime.datetime(testdate.year,1,1)).days // 7) + 1)
24
Другой вариант:
import time
from time import gmtime, strftime
d = time.strptime("16 Jun 2010", "%d %b %Y")
print(strftime("%U", d))
, который печатает 24
.
См .: http://docs.python.org/library/datetime.html#strftime-and-strptime-behavior
datetime.date
имеет метод isocalendar ()
, который возвращает кортеж, содержащий календарную неделю:
>>> import datetime
>>> datetime.date(2010, 6, 16).isocalendar()[1]
24
datetime.date.isocalendar () - метод экземпляра, возвращающий кортеж, содержащий год, номер недели и день недели в соответствующем порядке для данного экземпляра даты.