23 lines
794 B
Python
23 lines
794 B
Python
from datetime import datetime
|
|
from datetime import date
|
|
from zoneinfo import ZoneInfo
|
|
|
|
BEIJING_TZ = ZoneInfo("Asia/Shanghai")
|
|
|
|
|
|
def beijing_now() -> datetime:
|
|
# 数据库字段使用无时区DateTime,写入前统一转换成北京时间,避免UTC时间直接显示到业务界面。
|
|
return datetime.now(BEIJING_TZ).replace(tzinfo=None)
|
|
|
|
|
|
def beijing_today() -> date:
|
|
# Agent日报的业务日期按北京时间计算,避免UTC服务器在清晨生成前一天日报。
|
|
return datetime.now(BEIJING_TZ).date()
|
|
|
|
|
|
def to_beijing_naive(value: datetime) -> datetime:
|
|
# 外部接口常返回带时区时间,入库前统一换算为北京时间的无时区值。
|
|
if value.tzinfo is None:
|
|
return value
|
|
return value.astimezone(BEIJING_TZ).replace(tzinfo=None)
|