UnknownTimeZoneError:' IST' for apscheduler

时间:2016-12-01 08:01:37

标签: python timezone apscheduler

我试图根据印度标准时间在apscheduler中添加一份工作

scheduler.add_job('cron',start_date=date, hour=time[0], minute=time[1], id=str(job[0]),timezone='IST')

但每次发出错误时UnknownTimeZoneError:' IST'。 调度程序正在接受EST,UTC等,但不接受IST。

IST是印度标准时间的正确时区吗?如果不是,我如何根据IST安排工作?

1 个答案:

答案 0 :(得分:1)

根据comments in source code,您可以将datetime.tzinfo对象传递给调度程序:

  

:param str | datetime.tzinfo timezone:默认时区(默认为本地时区)

考虑到上述情况,您可以尝试以下操作:

import datetime
tz = datetime.timezone(datetime.timedelta(hours=5, minutes=30))
scheduler.add_job('cron',start_date=date, hour=time[0], minute=time[1], id=str(job[0]),timezone=tz)

更新:Python 2并未提供tzinfo类的具体实现,但您可以roll your own

import datetime

class IST(datetime.tzinfo):
    def utcoffset(self, dt):
        return datetime.timedelta(hours=5, minutes=30)

    def tzname(self, dt):
        return "IST"

    def dst(self, dt):
        return datetime.timedelta()

tz = IST()
print datetime.datetime.now(tz)

输出:

2016-12-01 14:33:37.031316+05:30