diff options
| -rw-r--r-- | openstack/common/timeutils.py | 6 | ||||
| -rw-r--r-- | tests/unit/test_timeutils.py | 20 |
2 files changed, 24 insertions, 2 deletions
diff --git a/openstack/common/timeutils.py b/openstack/common/timeutils.py index 9901a4c..93b34fc 100644 --- a/openstack/common/timeutils.py +++ b/openstack/common/timeutils.py @@ -62,9 +62,11 @@ def parse_strtime(timestr, fmt=PERFECT_TIME_FORMAT): def normalize_time(timestamp): - """Normalize time in arbitrary timezone to UTC""" + """Normalize time in arbitrary timezone to UTC naive object""" offset = timestamp.utcoffset() - return timestamp.replace(tzinfo=None) - offset if offset else timestamp + if offset is None: + return timestamp + return timestamp.replace(tzinfo=None) - offset def is_older_than(before, seconds): diff --git a/tests/unit/test_timeutils.py b/tests/unit/test_timeutils.py index 129609e..7e6ae72 100644 --- a/tests/unit/test_timeutils.py +++ b/tests/unit/test_timeutils.py @@ -214,3 +214,23 @@ class TestIso8601Time(unittest.TestCase): west = timeutils.parse_isotime(str) normed = timeutils.normalize_time(west) self._instaneous(normed, 2012, 2, 13, 23, 53, 07, 0) + + def test_normalize_aware_to_naive(self): + dt = datetime.datetime(2011, 2, 14, 20, 53, 07) + str = '2011-02-14T20:53:07+21:00' + aware = timeutils.parse_isotime(str) + naive = timeutils.normalize_time(aware) + self.assertTrue(naive < dt) + + def test_normalize_zulu_aware_to_naive(self): + dt = datetime.datetime(2011, 2, 14, 20, 53, 07) + str = '2011-02-14T19:53:07Z' + aware = timeutils.parse_isotime(str) + naive = timeutils.normalize_time(aware) + self.assertTrue(naive < dt) + + def test_normalize_naive(self): + dt = datetime.datetime(2011, 2, 14, 20, 53, 07) + dtn = datetime.datetime(2011, 2, 14, 19, 53, 07) + naive = timeutils.normalize_time(dtn) + self.assertTrue(naive < dt) |
