Как узнать, существует ли дата между двумя другими датами в Python?
У меня есть следующие коды:
if date in (start, end):
print 'in between'
else:
print 'No!'
дата, начало и конец - это все переменные с форматом 1/1. Что делать, чтобы распечатать правильный результат? я пробовал дату как 10/2, начинаю как 3/14 и заканчиваюсь как 11/7, и он печатает "Нет!", что означает, что он не работает правильно. Думаю, нужно отформатировать их до формата даты, а затем сравнить их. Спасибо за любую помощь!
Ответы
Ответ 1
Как вы все еще не удовлетворены, у меня есть другой ответ для вас. Без использования даты и времени.
Он просто использует встроенные кортежи и сравнивает их:
d1 = (3, 28)
d2 = (3, 31)
d3 = (4, 2)
if d1 < d2 < d3:
print("BETWEEN!")
else:
print("NOT!")
Вы можете легко создавать кортеж:
day = 16
month = 4
d = (month, day)
Ответ 2
Если вы преобразуете все свои даты в datetime.date
, вы можете написать следующее:
if start <= date <= end:
print "in between"
else:
print "No!"
Ответ 3
Используйте datetime.date
:
http://docs.python.org/library/datetime.html#datetime.date
Оператор <
перегружен специально для вас.
date1 < date2
- date1 считается меньше даты2, когда дата1 предшествует дате 2 во времени.
>>> from datetime import date
>>> d1 = date(2011, 3, 28)
>>> d2 = date(2011, 3, 22)
>>> d3 = date(2011, 4, 3)
>>> d2 < d1 < d3
True
Или в вашей программе:
from datetime import date
d1 = date(2011, 3, 28)
d2 = date(2011, 3, 22)
d3 = date(2011, 4, 3)
if d2 < d1 < d3:
print 'in between'
else:
print 'No!'
Ответ 4
из datetime import datetime
date_format = "% m/% d/% Y"
a = datetime.strptime('8/18/2008', date_format)
b = datetime.strptime('9/26/2007', date_format) # Дата для проверки
c = datetime.strptime('9/25/2008', date_format)
d = datetime.strptime('8/18/2008', date_format) # Дат, введенный здесь, всегда должен быть таким же, как 'a'
delta1 = b - a
delta2 = c - b
delta3 = d - a
если delta1.days >= delta3.days и delta2.days >= delta3.days:
print 'In between'
еще:
print 'Not in between'