28 lines
963 B
Python
28 lines
963 B
Python
from datetime import datetime, timezone
|
|
from zoneinfo import ZoneInfo
|
|
from flask import current_app
|
|
|
|
|
|
def get_timezone():
|
|
tz_name = current_app.config.get("TIMEZONE", "UTC")
|
|
return ZoneInfo(tz_name)
|
|
|
|
|
|
def utc_to_local(dt):
|
|
"""Конвертирует наивное UTC-время в локальное наивное время."""
|
|
if dt is None:
|
|
return None
|
|
# Считаем, что хранимое время — UTC
|
|
utc_dt = dt.replace(tzinfo=timezone.utc) if dt.tzinfo is None else dt.astimezone(timezone.utc)
|
|
local_dt = utc_dt.astimezone(get_timezone())
|
|
return local_dt.replace(tzinfo=None)
|
|
|
|
|
|
def local_to_utc(dt):
|
|
"""Конвертирует наивное локальное время в UTC-наивное для хранения."""
|
|
if dt is None:
|
|
return None
|
|
local_dt = dt.replace(tzinfo=get_timezone())
|
|
utc_dt = local_dt.astimezone(timezone.utc)
|
|
return utc_dt.replace(tzinfo=None)
|