done
This commit is contained in:
44
lib/python3.11/site-packages/babel/localtime/_fallback.py
Normal file
44
lib/python3.11/site-packages/babel/localtime/_fallback.py
Normal file
@ -0,0 +1,44 @@
|
||||
"""
|
||||
babel.localtime._fallback
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Emulated fallback local timezone when all else fails.
|
||||
|
||||
:copyright: (c) 2013-2025 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
|
Reference in New Issue
Block a user