def test_split_tzname_delta(self): tests = [ ("Asia/Ust+Nera", ("Asia/Ust+Nera", None, None)), ("Asia/Ust-Nera", ("Asia/Ust-Nera", None, None)), ("Asia/Ust+Nera-02:00", ("Asia/Ust+Nera", "-", "02:00")), ("Asia/Ust-Nera+05:00", ("Asia/Ust-Nera", "+", "05:00")), ("America/Coral_Harbour-01:00", ("America/Coral_Harbour", "-", "01:00")), ("America/Coral_Harbour+02:30", ("America/Coral_Harbour", "+", "02:30")), ("UTC+15:00", ("UTC", "+", "15:00")), ("UTC-04:43", ("UTC", "-", "04:43")), ("UTC", ("UTC", None, None)), ("UTC+1", ("UTC+1", None, None)), ] for tzname, expected in tests: with self.subTest(tzname=tzname): self.assertEqual(split_tzname_delta(tzname), expected)
def _sqlite_datetime_parse(dt, tzname=None, conn_tzname=None): if dt is None: return None try: dt = typecast_timestamp(dt) except (TypeError, ValueError): return None if conn_tzname: dt = dt.replace(tzinfo=timezone_constructor(conn_tzname)) if tzname is not None and tzname != conn_tzname: tzname, sign, offset = split_tzname_delta(tzname) if offset: hours, minutes = offset.split(":") offset_delta = timedelta(hours=int(hours), minutes=int(minutes)) dt += offset_delta if sign == "+" else -offset_delta dt = timezone.localtime(dt, timezone_constructor(tzname)) return dt
def _prepare_tzname_delta(self, tzname): tzname, sign, offset = split_tzname_delta(tzname) if offset: sign = "-" if sign == "+" else "+" return f"{tzname}{sign}{offset}" return tzname
def _prepare_tzname_delta(self, tzname): tzname, sign, offset = split_tzname_delta(tzname) if offset: sign = '-' if sign == '+' else '+' return f'{tzname}{sign}{offset}' return tzname
def _prepare_tzname_delta(self, tzname): tzname, sign, offset = split_tzname_delta(tzname) return f"{sign}{offset}" if offset else tzname