Рубрики
Без рубрики

Python: Получить количество дней между датами

В этом уроке мы рассмотрим, как получить количество дней между двумя датами в Python, используя модуль datetime и объекты timedelta, а также сложение и вычитание фиксированных таймфреймов.

Автор оригинала: Spencer Porter.

Python: Получить количество дней между датами

Вступление

В этом уроке мы рассмотрим как получить количество дней между двумя датами в Python .

Мы будем использовать встроенный пакет datetime , который позволяет вам действительно легко работать с объектами datetime в Python.

Создание объекта Datetime

Поскольку datetime-это встроенный модуль, вы можете получить к нему доступ сразу же, импортировав его в верхнюю часть вашего файла Python.

Вы можете создавать объекты datetime несколькими различными способами:

from datetime import datetime

date_string = "1 January, 2021"

now = datetime.now() # Create Datetime based on system clock
dt1 = datetime(day=1, month=1, year=2021) # Create Datetime with given arguments
dt2 = datetime.strptime(date_string, "%d %B, %Y") # Create Datetime from String

Есть определенные правила, которым нужно следовать, когда дело доходит до преобразования строк в Datetime в Python .

Получить Количество дней между датами в Python

Попытка измерить количество дней между датами без использования модуля datetime является обманчиво сложной задачей – между учетом високосных лет и количеством дней в каждом месяце пытаться создать свою собственную реализацию бессмысленно.

Однако с датой и временем это становится тривиальным.

Вы можете просто вычесть a date или datetime друг из друга, чтобы получить количество дней между ними:

from datetime import datetime

date1 = datetime.now()
date2 = datetime(day=1, month=7, year=2021)

timedelta = date2 - date1
print(timedelta)

Это возвращает объект timedelta , который содержит дни , секунды и микросекунды и представляет длительность между любыми двумя объектами date /time или datetime .

Печать этого объекта вернет дни, часы, минуты, секунды и микросекунды к этому событию:

149 days, 5:22:52.255124

Если вас не интересуют некоторые из этих показателей, вы можете указать, к каким из них вы хотели бы получить доступ с помощью timedelta.дни , timedelta.секунды и timedelta.микросекунды :

now = datetime.now()
new_years = datetime(day=1, month=1, year=2022)
countdown = new_years - now

print('Today is: ', now)
print('New Year is on: ', new_years)
print('Days until New Years: ', countdown.days)

Здесь мы назначили дни между now и new_years в countdown , который является объектом timedelta .

Затем мы можем просто получить доступ к параметру days этого объекта, чтобы получить количество дней между ними. Это приводит к:

Today is:  2021-02-01 18:35:12.272524
New Year is on:  2022-01-01 00:00:00
Days until New Years:  333

Добавление и Вычитание дней С помощью TimeDelta

Что, если вместо того, чтобы пытаться вычесть две известные даты друг из друга, вы хотите добавить или вычесть временные рамки? Например, клиент подписался на вашу услугу за ежемесячную плату. Вы захотите напомнить им, чтобы они продлили его через 30 дней.

Вы можете построить временные рамки для этих 30 дней, используя timedelta и добавить или вычесть их из любого другого объекта datetime :

from datetime import datetime, timedelta

now = datetime.now()
thirty_days = timedelta(days=30)

print('In 30 days: ', now + thirty_days)
print('30 days ago: ', now - thirty_days)

Это приводит к:

In 30 days:  2021-03-03 18:41:49.922082
30 days ago:  2021-01-02 18:41:49.922082

Это невероятно полезная функция при попытке реализовать планирование или извлечение записей базы данных на основе движущегося окна (например, трейлинг-30 дней).

Вывод

В этом уроке мы рассмотрели все, что вам нужно знать о получении количества дней между двумя датами в Python.

Мы работали с объектами datetime и timedelta для достижения этой функциональности.