From c3fd9699656d6750fa92bec676916e04b53c53fb Mon Sep 17 00:00:00 2001 From: Paulo Victor Cordeiro <146781332+pvcordeiro@users.noreply.github.com> Date: Tue, 2 Jun 2026 19:07:00 +0100 Subject: [PATCH] fix: once-schedule comparison uses local time against UTC date (#1349) When a timezone is configured, `now` is tz-aware local time. The comparison stripped tzinfo with `.replace(tzinfo=None)`, producing naive local time, but `scheduled_date` is stored as naive UTC. For users east of UTC this causes tasks to appear expired prematurely; for users west they linger past due time. Use `_to_utc_naive(now)` to convert to the same reference frame. --- src/task_scheduler.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/task_scheduler.py b/src/task_scheduler.py index dbf389b..f67c214 100644 --- a/src/task_scheduler.py +++ b/src/task_scheduler.py @@ -115,7 +115,7 @@ def compute_next_run(schedule: str, scheduled_time: str, return None if schedule == "once": - if scheduled_date and scheduled_date > (now.replace(tzinfo=None) if tz is not None else now): + if scheduled_date and scheduled_date > (_to_utc_naive(now) if tz is not None else now): return scheduled_date return None