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 datetime import datetime
|
||||||
from typing import List, Optional
|
from typing import List, Optional
|
||||||
|
|
||||||
|
import pytz
|
||||||
|
|
||||||
from sqlalchemy import (
|
from sqlalchemy import (
|
||||||
Boolean,
|
Boolean,
|
||||||
DateTime,
|
DateTime,
|
||||||
@ -74,7 +76,11 @@ class Reminder(Base):
|
|||||||
|
|
||||||
def schedule_summary(self) -> str:
|
def schedule_summary(self) -> str:
|
||||||
if self.reminder_type == "once" and self.once_time:
|
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:
|
if self.reminder_type == "daily" and self.daily_time:
|
||||||
return f"每天 {self.daily_time}"
|
return f"每天 {self.daily_time}"
|
||||||
if self.reminder_type == "weekly" and self.weekly_days and 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
|
return None
|
||||||
run_time = reminder.once_time
|
run_time = reminder.once_time
|
||||||
if run_time.tzinfo is None:
|
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):
|
if run_time <= datetime.now(timezone.utc).astimezone(SHANGHAI_TZ):
|
||||||
return None # already passed
|
return None # already passed
|
||||||
return DateTrigger(run_date=run_time, timezone=SHANGHAI_TZ)
|
return DateTrigger(run_date=run_time, timezone=SHANGHAI_TZ)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user