Pycron
Simple cron-like parser for Python, which determines if current datetime matches conditions
Install / Use
/learn @kipe/PycronREADME
pycron
Simple cron-like parser for Python, which determines if current datetime matches conditions.
Installation
pip install pycron
Usage
import pycron
pycron.is_now('*/5 * * * *') # True every 5 minutes
pycron.is_now('0 * * * *') # True every hour, on minute 0
Help
The formats currently supported are
*/5(for "every X" function),4-10(for time ranges),6,8,23(for a list of values),*(for wildcard),- and of course a single number.
The module includes is_now(s, dt=None), where s is the cron-style string
and dt is the datetime to use (defaults to current datetime, if not set).
The function returns True, if dt matches the format.
It also includes has_been(s, since, dt=None), where s is the cron-style string,
since is a datetime in the past and dt is the datetime to use (defaults to current datetime, if not set).
The function returns True, if dt would have matched the format at some point during the period.
This behaves much like like anacron and is useful for applications which do not run continuously.
All functions are compatible with both timezone aware and naive datetimes.
There are couple of helpers available, mainly for use with Django. They give out list of tuples, as required by Django field choices.
The available helpers are
pycron.MINUTE_CHOICES,pycron.HOUR_CHOICES,pycron.DOM_CHOICES, for day of monthpycron.MONTH_CHOICES, for month namespycron.DOW_CHOICES, for day names
Support for alternative datetime -libraries
Currently supported "alternative" datetime libraries are:
Notes
This was done, as I personally needed something like this to implement proper timers for my Django-project and every available library felt too complicated for my use-case. Also, this was a good coding exercise...
As the Django -helper choices are quite limited, I've expanded them in my own project by adding values like
('*/5', 'every 5 minutes'), ('1-5', 'on weekdays'), and ('0,6', 'on weekends').
I haven't included them in the code, as every use-case is different, this was just to give an idea on how to use this ;)
Related Skills
node-connect
339.5kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
claude-opus-4-5-migration
83.9kMigrate prompts and code from Claude Sonnet 4.0, Sonnet 4.5, or Opus 4.1 to Opus 4.5
frontend-design
83.9kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
model-usage
339.5kUse CodexBar CLI local cost usage to summarize per-model usage for Codex or Claude, including the current (most recent) model or a full model breakdown. Trigger when asked for model-level usage/cost data from codexbar, or when you need a scriptable per-model summary from codexbar cost JSON.
