datetime
. Сначала вычисляем разницу между датами, которая даст объект timedelta
. timedelta
имеет атрибут days
. Чтобы узнать количество недель, делим days
на 7. Остаток от деления на 7 даст оставшиеся дни.
import datetime
date1 = datetime.date(2024, 1, 1)
date2 = datetime.date(2024, 1, 22)
delta = date2 - date1
weeks = delta.days // 7
days = delta.days % 7
print(f"Недель: {weeks}, Дней: {days}") # Вывод: Недель: 3, Дней: 0
Для работы с разницей между датами, учитывая не только количество дней, но и недели в Python, можно использовать модуль datetime
и модуль dateutil
. dateutil
расширяет возможности datetime
и предоставляет более удобные функции для работы с датами и временем, особенно для вычисления разницы между датами с учетом недель.
Пример с использованием datetime
и ручным расчетом недель:
import datetime
date1 = datetime.date(2023, 10, 26)
date2 = datetime.date(2023, 11, 29)
delta = date2 - date1
total_days = delta.days
weeks = total_days // 7 # Целочисленное деление для получения количества полных недель
remaining_days = total_days % 7 # Оставшиеся дни после вычета полных недель
print(f"Всего дней: {total_days}")
print(f"Полных недель: {weeks}")
print(f"Осталось дней: {remaining_days}")
В этом примере, мы вычисляем разницу между датами в днях, а затем делим это значение на 7, чтобы получить количество полных недель. Остаток от деления - это количество дней, оставшихся после вычета полных недель.
Пример с использованием dateutil
(более предпочтительный способ):
from datetime import date
from dateutil.relativedelta import relativedelta
date1 = date(2023, 10, 26)
date2 = date(2023, 11, 29)
delta = relativedelta(date2, date1)
print(f"Лет: {delta.years}")
print(f"Месяцев: {delta.months}")
print(f"Дней: {delta.days}")
print(f"Недель: {delta.weeks}") # Обратите внимание на атрибут weeks
В этом примере, relativedelta
автоматически вычисляет разницу между датами и предоставляет атрибуты, такие как weeks
, days
, months
и years
, что значительно упрощает процесс. Этот метод более гибок и позволяет получать разницу в разных единицах измерения.
Установка dateutil
:
Если у вас еще не установлен dateutil
, установите его с помощью pip:
pip install python-dateutil
Вывод:
Использование dateutil
с relativedelta
обычно является более предпочтительным подходом, так как он предоставляет более удобный и гибкий способ работы с разницей между датами, учитывая различные единицы времени, включая недели.