Как получить недельное число в Python?

Как узнать, какое недельное число является текущим годом 16-го июня (wk24) с Python?

304
задан Abdur Rehman 12 December 2017 в 21:05
поделиться

5 ответов

Думаю, 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] возвращает день недели. . Просто, насколько это возможно.

74
ответ дан 23 November 2019 в 01:21
поделиться

Неделя ISO, предложенная другими, хороша, но может не соответствовать вашим потребностям. Предполагается, что каждая неделя начинается с понедельника, что приводит к некоторым интересным аномалиям в начале и в конце года.

Если вы предпочитаете использовать определение, согласно которому неделя 1 всегда с 1 по 7 января, независимо от дня недели, используйте следующий вывод:

>>> testdate=datetime.datetime(2010,6,16)
>>> print(((testdate - datetime.datetime(testdate.year,1,1)).days // 7) + 1)
24
21
ответ дан 23 November 2019 в 01:21
поделиться

Другой вариант:

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

27
ответ дан 23 November 2019 в 01:21
поделиться

datetime.date имеет метод isocalendar () , который возвращает кортеж, содержащий календарную неделю:

>>> import datetime
>>> datetime.date(2010, 6, 16).isocalendar()[1]
24

datetime.date.isocalendar () - метод экземпляра, возвращающий кортеж, содержащий год, номер недели и день недели в соответствующем порядке для данного экземпляра даты.

373
ответ дан 23 November 2019 в 01:21
поделиться

Посмотрите на datetime.datetime.isocalendar .

7
ответ дан 23 November 2019 в 01:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: