mirror of
https://github.com/fastapi-practices/fastapi_best_architecture.git
synced 2026-03-13 09:31:31 +08:00
65 lines
1.4 KiB
Python
65 lines
1.4 KiB
Python
#!/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:
|
||
"""
|
||
时区时间转 UTC(GMT)时区
|
||
|
||
:param dt:
|
||
:return:
|
||
"""
|
||
return dt.astimezone(datetime_timezone.utc)
|
||
|
||
|
||
timezone: TimeZone = TimeZone()
|