better timezone logic
This commit is contained in:
@@ -1 +1 @@
|
|||||||
Version 2.0.4 (2012-08-31 15:38:34) stable
|
Version 2.0.4 (2012-08-31 16:00:18) stable
|
||||||
|
|||||||
+12
-15
@@ -1793,21 +1793,18 @@ class BaseAdapter(ConnectionPool):
|
|||||||
|
|
||||||
def parse_datetime(self, value, field_type):
|
def parse_datetime(self, value, field_type):
|
||||||
if not isinstance(value, datetime.datetime):
|
if not isinstance(value, datetime.datetime):
|
||||||
try:
|
value = str(value)
|
||||||
if '+' in value:
|
date_part,time_part,timezone = value[:10],value[11:19],value[19:]
|
||||||
value,tz = value.split('+')
|
if '+' in timezone:
|
||||||
h,m = tz.split(':')
|
ms,tz = timezone.split('+')
|
||||||
dt = datetime.timedelta(seconds=3600*int(h)+60*int(m))
|
h,m = tz.split(':')
|
||||||
elif '-' in value:
|
dt = datetime.timedelta(seconds=3600*int(h)+60*int(m))
|
||||||
value,tz = value.split('-')
|
elif '-' in timezone:
|
||||||
h,m = tz.split(':')
|
ms,tz = value.split('-')
|
||||||
dt = -datetime.timedelta(seconds=3600*int(h)+60*int(m))
|
h,m = tz.split(':')
|
||||||
else:
|
dt = -datetime.timedelta(seconds=3600*int(h)+60*int(m))
|
||||||
dt = None
|
else:
|
||||||
except: # invalid timezone format (should never happen)
|
dt = None
|
||||||
pass
|
|
||||||
date_part, time_part = (
|
|
||||||
str(value)[:19].replace('T',' ')+' ').split(' ',1)
|
|
||||||
(y, m, d) = map(int,date_part.split('-'))
|
(y, m, d) = map(int,date_part.split('-'))
|
||||||
time_parts = time_part and time_part.split(':')[:3] or (0,0,0)
|
time_parts = time_part and time_part.split(':')[:3] or (0,0,0)
|
||||||
while len(time_parts)<3: time_parts.append(0)
|
while len(time_parts)<3: time_parts.append(0)
|
||||||
|
|||||||
Reference in New Issue
Block a user