Как добавить минуты к сравнению диапазона даты и времени? - PullRequest
0 голосов
/ 31 марта 2020

Как я могу изменить приведенное ниже, чтобы учесть минуты, а также наш диапазон дат и времени?

Например, нижеприведенный код работает нормально.

from datetime import datetime

if (datetime.now().hour>=14) and (datetime.now().hour<=16):
         print ('afternoon' )

else:
        print ('not afternoon')

Если время уже позади 14:30, а до 16:30 напечатайте день.

Ответы [ 2 ]

2 голосов
/ 31 марта 2020

Вы можете использовать time из datetime для создания временных объектов. Таким образом, вы можете создать объект времени для вашего времени начала и объект времени для вашего времени окончания. тогда вы можете просто извлечь объект времени из даты и времени и сравнить его с простым выражением между. Я использовал timedelta, чтобы просто манипулировать текущей датой, чтобы показать эту работу.

from datetime import datetime, timedelta, time

datetimes = []
datetimes.append(datetime.now())
datetimes.append(datetimes[-1] + timedelta(hours=3, minutes=20))
datetimes.append(datetimes[-1] + timedelta(hours=3, minutes=20))
start_time = time(14, 30)
end_time = time(16, 30)
for current in datetimes:
    print(f"Time: {current.hour:02}:{current.minute:02}")
    if start_time <= current.time() <= end_time:
        print("afternoon")
    else:
        print("not afternoon")

OUTPUT

Time: 11:22
not afternoon
Time: 14:42
afternoon
Time: 18:02
not afternoon
0 голосов
/ 31 марта 2020
from datetime import datetime, time

def checkTime(t):
    if time(14, 30) <= t <= time(16, 30):
        print("time: " + t.strftime("%H") + "h" + " " + t.strftime("%M") + "m" + " is afternoon" )
    else:
        print("time: " + t.strftime("%H") + "h" + " " + t.strftime("%M") + "m" + " is not afternoon" )

checkTime(time(15,15)) # time: 15h 15m is afternoon
checkTime(time(14,30)) # time: 14h 30m is afternoon
checkTime(time(15,31)) # time: 15h 31m is afternoon
checkTime(time(14,29)) # time: 14h 29m is not afternoon
checkTime(time(16,31)) # time: 16h 31m is not afternoon
checkTime(time(18,10)) # time: 18h 10m is not afternoon
...