UnknownTimeZoneError: 'IST' for apscheduler

UnknownTimeZoneError: 'IST' for 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 安排工作?

根据调度程序的 comments in source code you can pass datetime.tzinfo 对象:

:param str|datetime.tzinfo timezone: the default time zone (defaults to the local 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 class 的具体实现,但您可以 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