From 70fd93ac8f772014ec97f41bd89b0a292c8a649b Mon Sep 17 00:00:00 2001 From: mdipierro Date: Tue, 21 Aug 2012 09:06:21 -0500 Subject: [PATCH] timezone support in dal, assumes local time is gmt time --- VERSION | 2 +- gluon/dal.py | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/VERSION b/VERSION index e3399f1b..b7270891 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -Version 2.00.0 (2012-08-21 08:55:37) dev +Version 2.00.0 (2012-08-21 09:06:18) dev diff --git a/gluon/dal.py b/gluon/dal.py index a1fdfa87..188b2550 100644 --- a/gluon/dal.py +++ b/gluon/dal.py @@ -1702,6 +1702,16 @@ class BaseAdapter(ConnectionPool): def parse_datetime(self, value, field_type): if not isinstance(value, datetime.datetime): + if '+' in value: + value,tz = value.split('+') + h,m = tz.split(':') + dt = datetime.timedelta(seconds=3600*int(h)+60*int(m)) + elif '-' in value: + value,tz = value.split('-') + h,m = tz.split(':') + dt = -datetime.timedelta(seconds=3600*int(h)+60*int(m)) + else: + dt = None date_part, time_part = ( str(value).replace('T',' ')+' ').split(' ',1) (y, m, d) = map(int,date_part.split('-')) @@ -1710,6 +1720,8 @@ class BaseAdapter(ConnectionPool): time_items = map(int,time_parts) (h, mi, s) = time_items value = datetime.datetime(y, m, d, h, mi, s) + if dt: + value = value + dt return value def parse_blob(self, value, field_type):