-2

我正在为我们的游戏社区创建一个事件通知系统。但是,我不完全确定从哪里开始。

我有一本事件及其时间的字典,例如:

{'Game Night': 19:00 2013-06-29,
'3CB vs ST3 Match': 18:45 2013-07-02,
'Website Maintainance': 13:00 2013-07-16,
etc}

时间已使用 strptime() 转换为正确的日期时间格式。我现在需要的是当这些事件之一即将发生时通知用户(例如 15 分钟警报,然后是 5 分钟警报)。

例如:

“注意:3CB vs ST3 比赛将在 15 分钟后开始!”
10分钟后...
“注意:3CB vs ST3 比赛将在 5 分钟后开始!”

我的问题是:如何让 python 等到事件临近(通过比较当前时间与事件的时间),然后执行操作(例如,在我的情况下通知)?

PS 我正在使用 Python 2.7.5(由于缺少 API 更新)

4

1 回答 1

0

尝试循环直到您的检查评估为 True:

import time
interval = 0.2  # nr of seconds
while True:
    stop_looping = myAlertCheck()
    if stop_looping:
        break
    time.sleep(interval)

睡眠为您提供其他任务的 CPU 时间。

编辑

好的,我不确定你的问题到底是什么。首先,我以为您想知道如何让 python '等待'一个事件。现在,您似乎想知道如何将活动日期与当前日期进行比较。我认为以下是更完整的方法。我想你可以自己填写详细信息??

import time
from datetime import datetime

interval = 3  # nr of seconds    
events = {
    'Game Night': '14:00 2013-06-23',
    '3CB vs ST3 Match': '18:45 2013-07-02',
    'Website Maintainance': '13:00 2013-07-16', 
}

def myAlertCheck(events):
    for title, event_date in events.iteritems():
        ed = datetime.strptime(event_date, '%H:%M %Y-%m-%d')
        delta_s = (datetime.now() - ed).seconds
        if delta_s < (15 * 60):
            print 'within 15 minutes %s starts' % title
            return True

while True:
    stop_looping = myAlertCheck(events)
    if stop_looping:
        break
    time.sleep(interval)
于 2013-06-23T09:51:27.177 回答