summaryrefslogtreecommitdiff
path: root/django/db/backends/sqlite3/base.py
diff options
context:
space:
mode:
authorCan Sarigol <ertugrulsarigol@gmail.com>2021-11-11 09:57:50 +0100
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2021-11-12 07:30:02 +0100
commit661316b066923493ff91d6d2aa92e463f595a6b1 (patch)
tree6730711bcf086e5692c251baadd196e0311f7236 /django/db/backends/sqlite3/base.py
parent78163d1ac4407d59bfc5fdf1f84f2dbbb2ed3443 (diff)
Fixed #33279 -- Fixed handling time zones with "-" sign in names.
Thanks yakimka for the report. Regression in fde9b7d35e4e185903cc14aa587ca870037941b1.
Diffstat (limited to 'django/db/backends/sqlite3/base.py')
-rw-r--r--django/db/backends/sqlite3/base.py13
1 files changed, 5 insertions, 8 deletions
diff --git a/django/db/backends/sqlite3/base.py b/django/db/backends/sqlite3/base.py
index fbad8039d8..6f5168f159 100644
--- a/django/db/backends/sqlite3/base.py
+++ b/django/db/backends/sqlite3/base.py
@@ -434,14 +434,11 @@ def _sqlite_datetime_parse(dt, tzname=None, conn_tzname=None):
if conn_tzname:
dt = dt.replace(tzinfo=timezone_constructor(conn_tzname))
if tzname is not None and tzname != conn_tzname:
- sign_index = tzname.find('+') + tzname.find('-') + 1
- if sign_index > -1:
- sign = tzname[sign_index]
- tzname, offset = tzname.split(sign)
- if offset:
- hours, minutes = offset.split(':')
- offset_delta = datetime.timedelta(hours=int(hours), minutes=int(minutes))
- dt += offset_delta if sign == '+' else -offset_delta
+ tzname, sign, offset = backend_utils.split_tzname_delta(tzname)
+ if offset:
+ hours, minutes = offset.split(':')
+ offset_delta = datetime.timedelta(hours=int(hours), minutes=int(minutes))
+ dt += offset_delta if sign == '+' else -offset_delta
dt = timezone.localtime(dt, timezone_constructor(tzname))
return dt