2016-07-25 103 views
1

我有四個變量:如何比較小時和分鐘?

start_hour = '12' 
start_minute = '00' 
end_hour = '22' 
end_minute = '30' 

和日期時間:

current_hour = datetime.now().hour 
curren_minute = datetime.now().minute 

我想比較,如果當前時間在此範圍內:

if int(start_hour) <= current_hour and int(end_hour) >= current_hour: 
    something 

但如何實現這與分鐘?

+0

以同樣的方式你小時做呢? –

+1

你是什麼意思,你想從12:30到22:30發生什麼 –

+5

將兩次轉換爲分鐘。 – usr2564301

回答

4

一個更好的方法去了解這將貝託兩次轉變爲分鐘:

start_time = int(start_hour)*60 + int(start_minute) 
end_time = int(end_hour)*60 + int(end_minute) 
current_time = datetime.now().hour*60 +datetime.now().minute 
if start_time <= current_time and end_time >= current_time: 
    #doSomething 

如果您需要包括秒鐘,一切都轉化爲秒。

11

您可以使用datetime.timedelta可靠地進行比較。您可以在不同的時間單位(小時,分鐘,秒等)中指定增量。然後,您不必擔心明確轉換爲小時,分鐘等。

例如,要檢查當前時間是一個多小時從start_time

six_point_five_hours_from_now = datetime.now() + datetime.timedelta(hours=6, minutes=30) 

if abs(datetime.now() - start_time) > datetime.timedelta(hours=1): 
    # Do thing 

還可以使用timedelta通過一個給定的量移位一個時間關於timedelta除了易於轉換單位之外的好處是它會自動處理跨越多天的時間差異等。

2

一個簡單明瞭的方式只有datetime對象做這一切是:

now = datetime.now() 
start = now.replace(hour = int(start_hour), minute = int(start_minute)) 
end = now.replace(hour = int(end_hour), minute = int(end_minute)) 

if start <= now <= end: 
    print('something') 
5

什麼:

>>> import datetime 

>>> now = datetime.datetime.now() 

>>> breakfast_time = now.replace(hour=7, minute=30, second=0, microsecond=0) 

>>> lunch_time = now.replace(hour=12, minute=30, second=0, microsecond=0) 

>>> coffee_break = now.replace(hour=16, minute=00, second=0, microsecond=0) 

>>> breakfast_time <= lunch_time <= coffee_break 
True 
+0

精彩的例子,謝謝! –