在app引擎中,如果当前时间介于特定时间间隔之间,我想调用一个函数。这就是我现在正在做的事情。
ist_time = datetime.utcnow() + timedelta(hours=5, minutes = 30)
ist_midnight = ist_time.replace(hour=0, minute=0, second=0, microsecond=0)
market_open = ist_midnight + timedelta(hours=9, minutes = 55)
market_close = ist_midnight + timedelta(hours=16, minutes = 01)
if ist_time >= market_open and ist_time <= market_close:
check_for_updates()
更好的方法。
答案 0 :(得分:1)
这更紧凑,但不那么明显:
if '09:55' <= time.strftime(
'%H:%M', time.gmtime((time.time() + 60 * (5 * 60 + 30)))) <= '16:01':
check_for_updates()
根据您完全正确地进行计算的重要程度,您可能需要考虑夏令时(使用 pytz - 可以上传 pytz < / em>捆绑到您的应用程序到AppEngine)以及秒和毫秒编码(例如使用< '16:02'
而不是<= '16:01'
,因为前者不依赖于秒/亚秒精度。
答案 1 :(得分:0)
好像你可能想要datetime的“时间”类型,它不关心日期。
import datetime
ist_time = datetime.utcnow() + datetime.timedelta(hours=5, minutes = 30)
# Turn this into a time object (no day information).
ist_time = ist_time.time()
if datetime.time(9, 55) <= ist_time <= datetime.time(16, 1):
...
我确信使用tzinfo处理时区调整是一种更优雅的方式,但我必须承认我从未处理过时区。