from datetime import datetime, date, time | |
from dateutil.tz import gettz | |
from tzlocal import get_localzone_name | |
def ensure_localisation(dt, timezone=get_localzone_name()): | |
"""Insures localisation with provided timezone on "datetime" object. | |
Does nothing to object of type "date".""" | |
if isinstance(dt, datetime): | |
if dt.tzinfo is None: | |
tz = gettz(timezone) | |
dt = dt.replace(tzinfo=tz) | |
return dt | |
elif isinstance(dt, date): | |
return dt | |
else: | |
raise TypeError('"date" or "datetime" object expected, not {!r}.'.format(dt.__class__.__name__)) | |
def to_localized_iso(dt, timezone=get_localzone_name()): | |
if not isinstance(dt, datetime): | |
dt = datetime.combine(dt, time()) | |
return ensure_localisation(dt, timezone).isoformat() | |