fix: handle timezone localization for reminder scheduling
This commit is contained in:
parent
80988c6580
commit
eebfbf2243
@ -3,6 +3,8 @@ from __future__ import annotations
|
||||
from datetime import datetime
|
||||
from typing import List, Optional
|
||||
|
||||
import pytz
|
||||
|
||||
from sqlalchemy import (
|
||||
Boolean,
|
||||
DateTime,
|
||||
@ -74,7 +76,11 @@ class Reminder(Base):
|
||||
|
||||
def schedule_summary(self) -> str:
|
||||
if self.reminder_type == "once" and self.once_time:
|
||||
return self.once_time.strftime("%Y-%m-%d %H:%M")
|
||||
tz = pytz.timezone("Asia/Shanghai")
|
||||
dt = self.once_time
|
||||
if dt.tzinfo is None:
|
||||
dt = pytz.utc.localize(dt)
|
||||
return dt.astimezone(tz).strftime("%Y-%m-%d %H:%M")
|
||||
if self.reminder_type == "daily" and self.daily_time:
|
||||
return f"每天 {self.daily_time}"
|
||||
if self.reminder_type == "weekly" and self.weekly_days and self.daily_time:
|
||||
|
||||
@ -101,7 +101,7 @@ def _build_trigger(reminder: Reminder):
|
||||
return None
|
||||
run_time = reminder.once_time
|
||||
if run_time.tzinfo is None:
|
||||
run_time = SHANGHAI_TZ.localize(run_time)
|
||||
run_time = pytz.utc.localize(run_time)
|
||||
if run_time <= datetime.now(timezone.utc).astimezone(SHANGHAI_TZ):
|
||||
return None # already passed
|
||||
return DateTrigger(run_date=run_time, timezone=SHANGHAI_TZ)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user