time-go/time_app/helpers/datetime.py

21 lines
634 B
Python

from datetime import datetime
from zoneinfo import ZoneInfo, available_timezones
ALLOWED_TIMEZONES = available_timezones()
DATETIME_FORMAT = '%Y-%m-%d %H:%M:%S'
def tz_aware_now(zone: str) -> datetime:
"""
:param str zone: Zone name in DB
:return: A timezone aware datetime object
:raises: ValueError When zone name is not supported
"""
# ZoneInfo uses a weak cache, no need to implement a local cache
if zone not in ALLOWED_TIMEZONES:
raise ValueError(f'Unsupported timezone "{zone}"')
return datetime.now(tz=ZoneInfo(zone))
def real_utc_now() -> datetime:
return tz_aware_now('UTC')