timezone.py 863 B

123456789101112131415161718192021222324252627
  1. """
  2. 时区工具函数
  3. """
  4. from datetime import datetime, timezone, timedelta
  5. def get_beijing_time() -> datetime:
  6. """获取当前北京时间 (UTC+8)"""
  7. beijing_tz = timezone(timedelta(hours=8))
  8. return datetime.now(beijing_tz)
  9. def beijing_now() -> datetime:
  10. """获取当前北京时间 (UTC+8) - 别名函数"""
  11. return get_beijing_time()
  12. def datetime_to_beijing(dt: datetime) -> datetime:
  13. """将datetime对象转换为北京时间"""
  14. if dt.tzinfo is None:
  15. # 如果是naive datetime,假设它是本地时间,转换为北京时间
  16. beijing_tz = timezone(timedelta(hours=8))
  17. return dt.replace(tzinfo=timezone.utc).astimezone(beijing_tz)
  18. else:
  19. # 如果已经有时区信息,直接转换为北京时间
  20. beijing_tz = timezone(timedelta(hours=8))
  21. return dt.astimezone(beijing_tz)