| 123456789101112131415161718192021222324252627282930313233 |
- """
- 时区工具函数
- """
- 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)
|