better timezone logic

This commit is contained in:
mdipierro
2012-08-31 16:00:23 -05:00
parent 3f7749cf20
commit a0e4154f26
2 changed files with 13 additions and 16 deletions
+1 -1
View File
@@ -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
View File
@@ -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)