diff options
Diffstat (limited to 'apscheduler/triggers/cron/__init__.py')
-rw-r--r-- | apscheduler/triggers/cron/__init__.py | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/apscheduler/triggers/cron/__init__.py b/apscheduler/triggers/cron/__init__.py index 66424cf..e7f6ae8 100644 --- a/apscheduler/triggers/cron/__init__.py +++ b/apscheduler/triggers/cron/__init__.py @@ -82,6 +82,26 @@ class CronTrigger(BaseTrigger): field = field_class(field_name, exprs, is_default) self.fields.append(field) + @classmethod + def from_crontab(cls, expr, timezone=None): + """ + Create a :class:`~CronTrigger` from a standard crontab expression. + + See https://en.wikipedia.org/wiki/Cron for more information on the format accepted here. + + :param expr: minute, hour, day of month, month, day of week + :param datetime.tzinfo|str timezone: time zone to use for the date/time calculations ( + defaults to scheduler timezone) + :return: a :class:`~CronTrigger` instance + + """ + values = expr.split(' ') + if len(values) != 5: + raise ValueError('Wrong number of fields; got {}, expected 5'.format(len(values))) + + return cls(minute=values[0], hour=values[1], day=values[2], month=values[3], + day_of_week=values[4], timezone=timezone) + def _increment_field_value(self, dateval, fieldnum): """ Increments the designated field and resets all less significant fields to their minimum |