因此,我列出了一些類似於警報的事件。他們的起始和結束時間(以小時和分鐘爲單位),一系列的日期(即星期三到星期三的1-3)以及一個月的範圍(即1-3,一月到三月)定義。這些數據的格式在很大程度上是不可改變的。我需要,不一定要對列表進行排序,但我需要根據當前時間查找下一個即將發生的事件。有很多不同的方法可以做到這一點,還有很多不同的角落案例。這是我的僞代碼:對排定的事件進行排序python
now = time()
diff = []
# Start difference between now and start times
for s in schedule #assuming appending to diff
diff.minutes = s.minutes - time.minutes #
diff.hours = s.hours - time.hours
diff.days = s.days - time.days
diff.months = s.months - time.months
for d in diff
if d < 0
d = period + d
# period is the maximum period of the attribute. ie minutes is 60, hours is 24
# repeat for event end times
所以,現在我有一個小時,分鐘,天和星期的差異元組列表。這個元組已經考慮到了它是否通過了開始時間,但是在結束時間之前。所以我們假設它是在八月份,事件的開始月份是七月份,結束月份是九月份,所以diff.month == 0
。現在
這種特定的極端情況下,給我的麻煩:
比方說一個時間表從0到23:59週四在八月中運行。這是星期五27日。運行我的算法,幾個月的差異將爲0,但實際上它將不會再次運行,直到下一個8月份,所以它應該是12。這個月是我認爲的唯一問題,因爲這個月是唯一屬性,直接取決於具體月份的日期(而不僅僅是一天)。我的算法是否正常,我可以處理這種特殊情況?還是有更好的東西呢?
這是我與
map['start_time']=''
map['end_time']=''
map['start_moy']=''
map['end_moy']=''
map['start_dow']=''
map['end_dow']=''
工作日程getAllSchedules方法只返回一個列表的所有時間表的數據。我可以更改課程表,但我不確定我可以在那裏做出什麼改變。我無法添加/更改我給出的時間表格式
電池包括在內。使用日期時間數學。 http://docs.python.org/library/datetime.html – msw 2010-08-12 20:59:21