diff --git a/cuvis/Measurement.py b/cuvis/Measurement.py index 565df82..a5eea77 100644 --- a/cuvis/Measurement.py +++ b/cuvis/Measurement.py @@ -12,7 +12,7 @@ import cuvis.cuvis_types as internal -base_datetime = datetime.datetime(1970, 1, 1) +base_datetime = datetime.datetime(1970, 1, 1, tzinfo=datetime.timezone.utc) class Measurement(object): diff --git a/cuvis/cuvis_aux.py b/cuvis/cuvis_aux.py index 1f71a1b..c2cd8d9 100644 --- a/cuvis/cuvis_aux.py +++ b/cuvis/cuvis_aux.py @@ -5,7 +5,7 @@ from ._cuvis_il import cuvis_il import logging import datetime -base_datetime = datetime.datetime(1970, 1, 1) +base_datetime = datetime.datetime(1970, 1, 1, tzinfo=datetime.timezone.utc) def _fn_bits(n): diff --git a/tests/test_measurement.py b/tests/test_measurement.py index 7c757b5..debd949 100644 --- a/tests/test_measurement.py +++ b/tests/test_measurement.py @@ -19,9 +19,19 @@ def test_measurement_metadata_attributes(test_measurement): def test_measurement_capture_time(test_measurement): - """Test capture time is a datetime object.""" + """Test capture time is a timezone-aware UTC datetime object.""" capture_time = test_measurement.capture_time assert isinstance(capture_time, datetime.datetime) + # capture_time originates from a UTC epoch timestamp and must be + # explicitly marked as UTC (see issue cuvis.pyil#29). + assert capture_time.tzinfo is not None + assert capture_time.utcoffset() == datetime.timedelta(0) + + +def test_measurement_capture_time_value(test_measurement): + """Test capture time has the expected exact UTC value (see cuvis.pyil#29).""" + assert test_measurement.capture_time == datetime.datetime( + 2023, 11, 24, 11, 13, 5, 356000, tzinfo=datetime.timezone.utc) def test_measurement_integration_time(test_measurement):