summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--openstack/common/timeutils.py6
-rw-r--r--tests/unit/test_timeutils.py20
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)