Complex Expressions ################### tzcron support cron expresions, you can familiarize with them `here `_. But that is not all, it also supports most of the quartz format, you can find below an example of the expressions that it accepts. Replacements ------------ Weekdays and months can be passed as their english string representatiosn (3 letters). If we want to get every thursday we can do: >>> schedule = tzcron.Schedule("30 10 * * thu *", pytz.utc) >>> [s.isoformat() for s in itertools.islice(schedule, 2)] ['2016-09-29T10:30:00+00:00', '2016-10-06T10:30:00+00:00'] To get days in january: >>> schedule = tzcron.Schedule("30 10 * JAN * *", pytz.utc) >>> [s.isoformat() for s in itertools.islice(schedule, 2)] ['2017-01-01T10:30:00+00:00', '2017-01-02T10:30:00+00:00'] Note it is case insensitive. Multiple values --------------- You can also provide multiple values on an option: This returns mondays and tuesdays >>> schedule = tzcron.Schedule("30 10 * * mon,tue *", pytz.utc) >>> [s.isoformat() for s in itertools.islice(schedule, 3)] ['2016-09-26T10:30:00+00:00', '2016-09-27T10:30:00+00:00', '2016-10-03T10:30:00+00:00'] Ranges ------ Ranges can be specified with the '-', both values are inclusive. >>> schedule = tzcron.Schedule("10-15 * * * * *", pytz.utc) >>> [s.isoformat() for s in itertools.islice(schedule, 2)] ['2016-09-25T22:10:00+00:00', '2016-09-25T22:11:00+00:00'] Steps ----- You can also ask for every X element For example, passing a step of 20 to the minutes will give: >>> schedule = tzcron.Schedule("*/20 * * * * *", pytz.utc) >>> [s.isoformat() for s in itertools.islice(schedule, 2)] ['2016-09-25T22:00:00+00:00', '2016-09-25T22:20:00+00:00'] Combining Specs --------------- All of the previous features can be combined at will, until your mind blows up and you stop understanding your schedule. As an example, to get tick on minutes between 0 and 10 that are pairs: >>> schedule = tzcron.Schedule("0-10/2 * * * * *", pytz.utc) >>> [s.isoformat() for s in itertools.islice(schedule, 4)] ['2016-09-25T22:00:00+00:00', '2016-09-25T22:02:00+00:00', '2016-09-25T22:04:00+00:00', '2016-09-25T22:06:00+00:00']