from __future__ import annotations from datetime import UTC, datetime, timedelta, timezone from zoneinfo import ZoneInfo, ZoneInfoNotFoundError def resolve_timezone(timezone_name: str): try: return ZoneInfo(timezone_name) except ZoneInfoNotFoundError: fallback_mapping = { "Asia/Shanghai": timezone(timedelta(hours=8)), "Asia/Hong_Kong": timezone(timedelta(hours=8)), "UTC": UTC, } return fallback_mapping.get(timezone_name, UTC) def format_now(timezone_name: str) -> str: current = datetime.now(resolve_timezone(timezone_name)) return current.strftime("%Y-%m-%d %H:%M:%S.%f")[:-3]