INNER CODE UNIT · Python
_calculate_next_run
MichielMe/fastscheduler · src/fastscheduler/main.py:367
def _calculate_next_run(self, job: Job):
"""Calculate next run time for time-based schedules."""
if job.timezone:
tz = ZoneInfo(job.timezone)
now = datetime.now(tz)
else:
now = datetime.now()
tz = None
if job.schedule_type == "cron" and job.cron_expression and CRONITER_AVAILABLE:
base_time = now if tz else datetime.now()
cron = croniter(job.cron_expression, base_time)
next_run = cron.get_next(datetime)
job.next_run = next_run.timestamp()
elif job.schedule_type == "daily" and job.schedule_time:
hour, minute = map(int, job.schedule_time.split(":"))
next_run = now.replace(hour=hour, minute=minute, second=0, microsecond=0)