from __future__ import annotations from typing import Any import pandas as pd US_TIMEZONE_OPTIONS: list[str] = [ "America/New_York", "America/Chicago", "America/Denver", "America/Los_Angeles", "America/Phoenix", "America/Anchorage", "Pacific/Honolulu", ] DEFAULT_DISPLAY_TIMEZONE = "America/Chicago" def normalize_display_timezone(value: Any, fallback: str = DEFAULT_DISPLAY_TIMEZONE) -> str: candidate = str(value or "").strip() if candidate in US_TIMEZONE_OPTIONS: return candidate return fallback if fallback in US_TIMEZONE_OPTIONS else DEFAULT_DISPLAY_TIMEZONE def format_timestamp( value: Any, display_timezone: str = DEFAULT_DISPLAY_TIMEZONE, use_24h_time: bool = False, ) -> str: try: ts = pd.Timestamp(value) except Exception: return "n/a" tz_name = normalize_display_timezone(display_timezone) try: if ts.tzinfo is None: ts = ts.tz_localize("UTC") converted = ts.tz_convert(tz_name) if use_24h_time: return converted.strftime("%Y-%m-%d %H:%M %Z") return converted.strftime("%Y-%m-%d %I:%M %p %Z").replace(" 0", " ", 1) except Exception: return "n/a"