summaryrefslogtreecommitdiff
path: root/apscheduler/triggers/cron/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'apscheduler/triggers/cron/__init__.py')
-rw-r--r--apscheduler/triggers/cron/__init__.py20
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