Skip to content

Commit d00b89f

Browse files
author
wangchaoqun
committed
🐞 fix:修复时区'Asia/Shanghai'和'+08:00' 不相等的问题
1 parent 0aa4ebc commit d00b89f

File tree

2 files changed

+5
-1
lines changed

2 files changed

+5
-1
lines changed

backend/common/model.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,9 @@ def python_type(self) -> type[datetime]:
6363

6464
def process_bind_param(self, value: datetime | None, dialect) -> datetime | None:
6565
if value is not None:
66-
if value.tzinfo != timezone.tz_info:
66+
# TODO这里没有考虑夏令时的问题,有些地区的夏令时会导致offset偏移改变
67+
# timezone.utcoffset 是首次加载初始化,在采用夏令时地区会有问题
68+
if value.utcoffset() != timezone.utcoffset:
6769
value = timezone.from_datetime(value)
6870
return value
6971

backend/utils/timezone.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ class TimeZone:
1212
def __init__(self) -> None:
1313
"""初始化时区转换器"""
1414
self.tz_info = zoneinfo.ZoneInfo(settings.DATETIME_TIMEZONE)
15+
# TODO 这里对实行夏令时地区会有问题,是否采用动态计算?
16+
self.utcoffset = datetime.now(tz=self.tz_info).utcoffset()
1517

1618
def now(self) -> datetime:
1719
"""获取当前时区时间"""

0 commit comments

Comments
 (0)