Files
ForbiddenStarsApp/backend/app/core/timeutil.py
T

30 lines
1.2 KiB
Python

"""Работа со временем: хранение в UTC, отдача ISO с явным смещением,
«сегодня» в часовом поясе приложения (по умолчанию +3)."""
from __future__ import annotations
from datetime import date, datetime, timedelta, timezone
from app.core.config import settings
APP_TZ = timezone(timedelta(hours=settings.app_tz_offset_hours))
def utcnow() -> datetime:
"""Текущее время в UTC (aware)."""
return datetime.now(timezone.utc)
def app_today() -> date:
"""Текущая дата в часовом поясе приложения (для «даты игры»)."""
return datetime.now(APP_TZ).date()
def iso_utc(dt: datetime | None) -> str | None:
"""ISO-строка с явным UTC-смещением. Наивное значение из SQLite считаем UTC,
чтобы фронт корректно сконвертировал его в локальный пояс отображения."""
if dt is None:
return None
if dt.tzinfo is None:
dt = dt.replace(tzinfo=timezone.utc)
return dt.astimezone(timezone.utc).isoformat()