diff --git a/CHANGELOG.md b/CHANGELOG.md index 0969286..9e522ce 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,6 @@ # CHANGELOG ## not released +- parser: Added support for reference_timestamp with tzinfo (fixes #84) - parser: Fixed textual altitude part (fixes #81) - parser: Skip keys where value is "None" diff --git a/ogn/parser/utils.py b/ogn/parser/utils.py index 7115b37..4573404 100644 --- a/ogn/parser/utils.py +++ b/ogn/parser/utils.py @@ -1,4 +1,4 @@ -from datetime import datetime, timedelta +from datetime import datetime, timedelta, timezone FEETS_TO_METER = 0.3048 # ratio feets to meter FPM_TO_MS = FEETS_TO_METER / 60 # ratio fpm to m/s @@ -11,7 +11,7 @@ def parseAngle(dddmmhht): return float(dddmmhht[:3]) + float(dddmmhht[3:]) / 60 -def createTimestamp(time_string, reference_timestamp=None): +def createTimestamp(time_string, reference_timestamp): if time_string[-1] == "z": dd = int(time_string[0:2]) hh = int(time_string[2:4]) @@ -20,7 +20,8 @@ def createTimestamp(time_string, reference_timestamp=None): result = datetime(reference_timestamp.year, reference_timestamp.month, dd, - hh, mm, 0) + hh, mm, 0, + tzinfo=timezone.utc if reference_timestamp.tzinfo is not None else None) if result > reference_timestamp + timedelta(days=14): # shift timestamp to previous month @@ -36,7 +37,8 @@ def createTimestamp(time_string, reference_timestamp=None): result = datetime(reference_timestamp.year, reference_timestamp.month, reference_timestamp.day, - hh, mm, ss) + hh, mm, ss, + tzinfo=timezone.utc if reference_timestamp.tzinfo is not None else None) if result > reference_timestamp + timedelta(hours=12): # shift timestamp to previous day diff --git a/tests/parser/test_utils.py b/tests/parser/test_utils.py index 270075e..01b011c 100644 --- a/tests/parser/test_utils.py +++ b/tests/parser/test_utils.py @@ -1,5 +1,5 @@ import unittest -from datetime import datetime +from datetime import datetime, timezone from ogn.parser.utils import parseAngle, createTimestamp @@ -33,6 +33,13 @@ class TestStringMethods(unittest.TestCase): self.proceed_test_data(test_data) + def test_createTimestamp_tzinfo(self): + test_data = [ + ('000001h', datetime(2020, 9, 10, 0, 0, 1, tzinfo=timezone.utc), (datetime(2020, 9, 10, 0, 0, 1, tzinfo=timezone.utc))) + ] + + self.proceed_test_data(test_data) + if __name__ == '__main__': unittest.main()