""" 时区工具函数 """ from datetime import datetime, timezone, timedelta def get_beijing_time() -> datetime: """获取当前北京时间 (UTC+8)""" beijing_tz = timezone(timedelta(hours=8)) return datetime.now(beijing_tz) def beijing_now() -> datetime: """获取当前北京时间 (UTC+8) - 带时区信息,用于展示/API""" return get_beijing_time() def beijing_now_naive() -> datetime: """获取当前北京时间 (UTC+8) - 无时区信息的 naive datetime,用于数据库存储与比较""" beijing_tz = timezone(timedelta(hours=8)) return datetime.now(beijing_tz).replace(tzinfo=None) def datetime_to_beijing(dt: datetime) -> datetime: """将datetime对象转换为北京时间""" if dt.tzinfo is None: # 如果是naive datetime,假设它是本地时间,转换为北京时间 beijing_tz = timezone(timedelta(hours=8)) return dt.replace(tzinfo=timezone.utc).astimezone(beijing_tz) else: # 如果已经有时区信息,直接转换为北京时间 beijing_tz = timezone(timedelta(hours=8)) return dt.astimezone(beijing_tz)