diff --git a/couchdbkit/schema/properties.py b/couchdbkit/schema/properties.py index 5ab574c..049133b 100644 --- a/couchdbkit/schema/properties.py +++ b/couchdbkit/schema/properties.py @@ -299,8 +299,7 @@ def to_python(self, value): try: value = value.split('.', 1)[0] # strip out microseconds value = value.rstrip('Z') # remove timezone separator - timestamp = timegm(time.strptime(value, '%Y-%m-%dT%H:%M:%S')) - value = datetime.datetime.utcfromtimestamp(timestamp) + value = datetime.datetime.strptime(value, '%Y-%m-%dT%H:%M:%S') except ValueError, e: raise ValueError('Invalid ISO date/time %r' % value) return value diff --git a/tests/test_schema.py b/tests/test_schema.py index 7bc44ec..575e894 100644 --- a/tests/test_schema.py +++ b/tests/test_schema.py @@ -573,10 +573,19 @@ def ftest(): test.field = "essai" self.assertRaises(BadValueError, ftest) - test.field = datetime.datetime(2008, 11, 10, 8, 0, 0) - self.assert_(test._doc['field'] == "2008-11-10T08:00:00Z") - value = test.field - self.assert_(isinstance(value, datetime.datetime)) + test_dates = [ + ([2008, 11, 10, 8, 0, 0], "2008-11-10T08:00:00Z"), + ([9999, 12, 31, 23, 59, 59], '9999-12-31T23:59:59Z'), + ([0001, 1, 1, 0, 0, 1], '0001-01-01T00:00:01Z'), + + ] + for date, date_str in test_dates: + test.field = datetime.datetime(*date) + self.assertEquals(test._doc['field'], date_str) + value = test.field + self.assert_(isinstance(value, datetime.datetime)) + + def testDateProperty(self): class Test(Document):