Сравните текущую дату с будущей датой в Python - PullRequest
0 голосов
/ 28 апреля 2020

Я пытаюсь сравнить текущую дату в следующем формате (ddmmyyyy) с будущей датой в следующем формате (ddmmyyyy)

Я поместил их в этот формат, чтобы я мог легко сравнить их как целые числа. Тем не менее, он продолжает проваливать тест if then.

from datetime import datetime, timedelta

StartDay=datetime.today()  # Get current date in this format 2020-04-28 19:59:16.901897

EndDay=StartDay+timedelta(60) # I want to be able to add 60 days to StartDay 

print(EndDay.strftime('%d%m%Y')) # Print EndDay as an integer 27062020

EndDay=EndDay.strftime('%d%m%Y') # Convert EndDay to make it look like an integer

StartDay=datetime.today().strftime('%d%m%Y') # Convert the StartDay to make it look like an integer

if int(StartDay)>int(EndDay):
    print('Game Over!')
else:
    pass

Чего я хочу добиться, так это целочисленного значения для даты, так что будущая дата всегда будет больше прошлой / текущей даты, если это делает смысл.

Ответы [ 3 ]

2 голосов
/ 28 апреля 2020

Вы можете напрямую сравнить datetime объекты, здесь нет необходимости в объезде:

from datetime import datetime
t0, t1 = datetime(2020,1,1), datetime(2020,1,2)

t0>t1
Out[6]: False

t0<t1
Out[7]: True

t1-t0
Out[8]: datetime.timedelta(days=1)
1 голос
/ 28 апреля 2020

Сохраните начальную и конечную даты как «datetime» и сделайте следующее:

from datetime import datetime, timedelta
StartDay=datetime.today()
EndDay=StartDay+timedelta(60) 
delta = (StartDay - EndDay).days
if delta > 0:
    print('Game Over!')
else:
    print('Something else')

Это должно сработать

1 голос
/ 28 апреля 2020

datetime.datetime можно легко преобразовать в datetime.date и затем сравнить, рассмотрев следующий пример:

from datetime import datetime, timedelta
StartDay = datetime.today()
EndDay = StartDay + timedelta(60)
StartDate = StartDay.date()  # datetime.date(2020, 4, 28)
EndDate = EndDay.date()  # datetime.date(2020, 6, 27)
print(StartDate < EndDate)  # True

Обратите внимание, что вы также можете сравнить datetime.datetime напрямую с datetime.datetime, но это также учитывает на единицу меньше, чем дни, поэтому если у вас есть два datetime.datetime s, скажем, d1 и d2 с одним и тем же годом-месяцем-днем, но разными часами, то результат d1 < d2 может отличаться от d1.date() < d2.date()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...