如何检查日期时间是否在 %d/%m/%Y 中以及它是否大于某个日期时间

How to check if a datetime is in %d/%m/%Y AND if its greater than a certain datetime

我正在努力让它检查它是否采用我想要的格式以及它是否大于今天的日期。我希望它在得到正确答案之前请求输入,但我找不到这样做的方法。

while True:
    try:
        x=dt.datetime.strptime(input(), '%d/%m/%Y')
        
        break
    except ValueError:
        print(1)
from datetime import datetime, date

while True:
    input_ = input('Enter a date -> ')

    try:
        dt = datetime.strptime(input_, '%d/%m/%Y').date()
    except ValueError:
        dt = None
    today = date.today()

    if dt and dt > today:
        break

print('All good!')

->

Enter a date -> 12/01/2021
Enter a date -> 18/01/2021
Enter a date -> 25/01/2021
Enter a date -> 14/02/2021
All good!

可以用todayclass方法得到一个代表今天日期的datetime对象,用><运算符进行比较它到解析的 x:

while True:
    try:
        x = dt.datetime.strptime(input(), '%d/%m/%Y')
        if x > dt.datetime.today():
            break
        else:
            print('before today')
    except ValueError:
        print('wrong format')

自定义您现有的代码来处理 - a) 有效日期检查 b) 大于今天的日期条件。

import datetime as dt
while True:
    try:
        x = dt.datetime.strptime(input(), '%d/%m/%Y')
        if x > dt.datetime.now():
            print(x)
            break
        else:
            print("Please Enter a Valid Date:")
    except ValueError:
        print("Invalid Date Format")

我的解决方案;


import datetime as dt

todays_date = dt.datetime.now()
todays_seconds = todays_date.timestamp()

done = False

while not done:
    user_input = input(f"Please type a date later that today's date ({todays_date.strftime('%d/%m/%Y')}): ")

    try:
        x = dt.datetime.strptime(user_input, '%d/%m/%Y')

        if x.timestamp() <= todays_seconds:
            print("Date must be after today's date")

        else:
            done = True

    except ValueError:
        print('Input not understood, please try again')


给予;

Please type a date later that today's date (30/01/2021): 30/01/2021
Date must be after today's date
Please type a date later that today's date (30/01/2021): 31/01/2021

Process finished with exit code 0