Files
fastapi_best_architecture/backend/utils/timezone.py
2025-01-23 13:12:46 +08:00

65 lines
1.4 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import zoneinfo
from datetime import datetime
from datetime import timezone as datetime_timezone
from backend.core.conf import settings
class TimeZone:
def __init__(self, tz: str = settings.DATETIME_TIMEZONE):
self.tz_info = zoneinfo.ZoneInfo(tz)
def now(self) -> datetime:
"""
获取时区时间
:return:
"""
return datetime.now(self.tz_info)
def f_datetime(self, dt: datetime) -> datetime:
"""
datetime 时间转时区时间
:param dt:
:return:
"""
return dt.astimezone(self.tz_info)
def f_str(self, date_str: str, format_str: str = settings.DATETIME_FORMAT) -> datetime:
"""
时间字符串转时区时间
:param date_str:
:param format_str:
:return:
"""
return datetime.strptime(date_str, format_str).replace(tzinfo=self.tz_info)
@staticmethod
def t_str(dt: datetime, format_str: str = settings.DATETIME_FORMAT) -> str:
"""
时间转时间字符串
:param dt:
:param format_str:
:return:
"""
return dt.strftime(format_str)
@staticmethod
def f_utc(dt: datetime) -> datetime:
"""
时区时间转 UTCGMT时区
:param dt:
:return:
"""
return dt.astimezone(datetime_timezone.utc)
timezone: TimeZone = TimeZone()