Вступление
В этом руководстве мы рассмотрим, как получить количество дней между двумя датами в 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 - обманчиво сложная задача - между учетом високосных лет и количества дней в каждом месяце попытки создать собственную реализацию бессмысленны.
Однако с
datetime
это становится тривиальным.
Вы можете просто вычесть date
или datetime
и datetime
друг от
друга, чтобы получить количество дней между ними:
from datetime import datetime
date1 = datetime.now()
date2 = datetime(day=1, month=7, year=2021)
timedelta = date2 - date1
print(timedelta)
Это возвращает timedelta
, который содержит days
, seconds
и
microseconds
и представляет собой промежуток времени между любыми
двумя объектами date
/ time
или datetime
Печать этого объекта вернет этому событию дни, часы, минуты, секунды и микросекунды:
149 days, 5:22:52.255124
Если вас не интересуют некоторые из этих показателей, вы можете указать,
к каким из них вы хотите получить доступ, с помощью timedelta.days
,
timedelta.seconds
и timedelta.microseconds
:
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
для достижения этой
функциональности.