import os
from zoneinfo import ZoneInfo

from dateutil import parser

local_timezone = os.getenv("TIMEZONE", ZoneInfo("America/New_York"))


def utc_string_to_aware_gmt_datetime(date):
    """
    Date can either be a string, naïve UTC datetime or an aware UTC datetime
    Returns an aware local datetime, essentially the time you'd see on your clock
    """
    date = parser.parse(date)
    forced_utc = date.replace(tzinfo=ZoneInfo("UTC"))
    return forced_utc.astimezone(local_timezone)
