Автор оригинала: 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
для достижения этой функциональности.