Spaces:
Runtime error
Runtime error
""" | |
babel.localtime._fallback | |
~~~~~~~~~~~~~~~~~~~~~~~~~ | |
Emulated fallback local timezone when all else fails. | |
:copyright: (c) 2013-2023 by the Babel Team. | |
:license: BSD, see LICENSE for more details. | |
""" | |
import datetime | |
import time | |
STDOFFSET = datetime.timedelta(seconds=-time.timezone) | |
DSTOFFSET = datetime.timedelta(seconds=-time.altzone) if time.daylight else STDOFFSET | |
DSTDIFF = DSTOFFSET - STDOFFSET | |
ZERO = datetime.timedelta(0) | |
class _FallbackLocalTimezone(datetime.tzinfo): | |
def utcoffset(self, dt: datetime.datetime) -> datetime.timedelta: | |
if self._isdst(dt): | |
return DSTOFFSET | |
else: | |
return STDOFFSET | |
def dst(self, dt: datetime.datetime) -> datetime.timedelta: | |
if self._isdst(dt): | |
return DSTDIFF | |
else: | |
return ZERO | |
def tzname(self, dt: datetime.datetime) -> str: | |
return time.tzname[self._isdst(dt)] | |
def _isdst(self, dt: datetime.datetime) -> bool: | |
tt = (dt.year, dt.month, dt.day, | |
dt.hour, dt.minute, dt.second, | |
dt.weekday(), 0, -1) | |
stamp = time.mktime(tt) | |
tt = time.localtime(stamp) | |
return tt.tm_isdst > 0 | |