2012-04-11 66 views
1

因此,我期望將諸如上午7:00之類的輸入作爲開始時間,並且將10:00 PM作爲結束時間,然後比較一組時間(同樣在8:00 AM,3:00 PM等形式)來查看這些時間是否在時間範圍內。有沒有一種很好的方法來創建一個有幾個小時的「日子」(最終時間可能遲至凌晨4點,所以我想我會從早上6點到上午5點59分而不是午夜 - 11:59 PM,如果可能的話)我可以檢查時間?在Python中創建小時數範圍

例如:starttime = 8:00 AM, endtime = 3:00 AM,並且檢查time = 7:00 AM將返回超出範圍的時間。

謝謝!

回答

2

使用datetime解析和比較功能:

from datetime import datetime, timedelta 

def parse_time(s): 
    ''' Parse 12-hours format ''' 
    return datetime.strptime(s, '%I:%M %p') 

starttime = parse_time('8:00 AM') 
endtime = parse_time('3:00 AM') 
if endtime < starttime: 
    # add 1 day to the end so that it's after start 
    endtime += timedelta(days=1) 

checked_time = parse_time('7:00 AM') 

# Can compare: 
print starttime <= checked_time < endtime 
+0

謝謝,這應該解決我的問題上午8:00之後的凌晨3:00。 – westbyb 2012-04-11 18:58:39

1

將所有時間轉換爲24小時格式,以分鐘和秒爲單位,以小時爲單位,然後將它們作爲數字進行比較,以查看時間是否在間隔中。

2

我可能會使用datetime庫。在輸入字符串上使用strptime(),然後您可以直接比較datetime對象。

1

Python的日期時間*類已經支持的比較:

>>> import datetime 
>>> datetime.datetime(2012,10,2,10) > datetime.datetime(2012,10,2,11) 
False 
>>> datetime.datetime(2012,10,2,10) > datetime.datetime(2012,10,2,9) 
True 

因此,所有你需要做的就是聲明一個類TIMERANGE,有兩名成員開始時間和結束時間。

def inside(self, time): 
    return self.startTime <= time and time <= self.endTime 
+5

實際上,比較在Python比更容易:'self.startTime <=時間,然後作爲「內部」功能可以是簡單<= self.endTime'。 – 2012-04-11 18:50:08

+0

@FredLarson真棒。 :) – user1202136 2012-04-11 18:50:59