Как получить номер недели для конкретной даты с использованием модуля `datetime`?

Для получения номера недели в Python с использованием модуля datetime, можно использовать метод isocalendar(), который возвращает кортеж из года ISO, номера недели ISO и дня недели ISO. Вот пример:

  import datetime

  date = datetime.date(2024, 10, 26)
  week_number = date.isocalendar()[1]
  print(week_number) # Выведет: 43
  
Или можно использовать strftime() с директивой %W (номер недели года, начиная с первого понедельника года) или %U (номер недели года, начиная с первого воскресенья года):

  import datetime

  date = datetime.date(2024, 10, 26)
  week_number_w = date.strftime("%W")
  week_number_u = date.strftime("%U")
  print(week_number_w) # Выведет: 43
  print(week_number_u) # Выведет: 43
  
Метод isocalendar() обычно предпочтительнее, так как он соответствует стандарту ISO 8601.

Для получения номера недели для конкретной даты с использованием модуля datetime в Python, можно воспользоваться методом isocalendar() объекта date или datetime.

Вот пример кода, демонстрирующий, как это сделать:


import datetime

# Укажите дату, для которой хотите получить номер недели
date_to_check = datetime.date(2023, 10, 27)  # Пример: 27 октября 2023 года

# Получаем номер недели, год ISO и день недели ISO
year, week_number, weekday = date_to_check.isocalendar()

# Выводим результат
print(f"Год ISO: {year}")
print(f"Номер недели: {week_number}")
print(f"День недели ISO: {weekday}")

# Альтернативный способ (если нужна только неделя):
week_number_only = date_to_check.isocalendar()[1]
print(f"Номер недели (только): {week_number_only}")


#Работает и с datetime объектом
date_time_to_check = datetime.datetime(2024, 1, 1, 12, 0, 0)
year_dt, week_number_dt, weekday_dt = date_time_to_check.isocalendar()
print(f"Для datetime, номер недели: {week_number_dt}")
  

Пояснения:

  • datetime.date(year, month, day) создает объект date, представляющий дату.
  • date_to_check.isocalendar() возвращает кортеж из трех элементов: год ISO, номер недели ISO и день недели ISO.
  • Год ISO может отличаться от календарного года, если неделя начинается в одном году и заканчивается в другом.
  • День недели ISO начинается с 1 (понедельник) и заканчивается 7 (воскресенье).
  • Можно извлечь только номер недели, обратившись к элементу с индексом [1] в кортеже, возвращенном isocalendar().
  • Метод `isocalendar()` также работает с объектами `datetime`.

Пример вывода:

Год ISO: 2023
Номер недели: 43
День недели ISO: 5
Номер недели (только): 43
Для datetime, номер недели: 1
  
0