diff --git a/digital_land/datatype/date.py b/digital_land/datatype/date.py index f5758ca5..0e175026 100644 --- a/digital_land/datatype/date.py +++ b/digital_land/datatype/date.py @@ -80,11 +80,11 @@ def normalise(self, fieldvalue, issues=None): continue int_part = value.split(".", 1)[0].lstrip("+-") - if len(int_part) not in (9, 10, 12, 13): + if len(int_part) not in (9, 10, 11, 12, 13): continue timestamp = float(value) - if len(int_part) == 13 or len(int_part) == 12: + if len(int_part) in (11, 12, 13): timestamp /= 1000.0 date = datetime.utcfromtimestamp(timestamp) break diff --git a/tests/unit/datatype/test_date.py b/tests/unit/datatype/test_date.py index 42eef170..abc49fa4 100644 --- a/tests/unit/datatype/test_date.py +++ b/tests/unit/datatype/test_date.py @@ -55,6 +55,11 @@ class TestDateDataType: ("946684800", "2000-01-01"), ("1715123456", "2024-05-07"), ("171512345678", "1975-06-09"), + # 11-digit millisecond timestamps + ("13392000000", "1970-06-05"), + ("-49507200000", "1968-06-07"), + ("10000000000", "1970-04-26"), + ("99999999999", "1973-03-03"), # years ("2020", "2020-01-01"), ("2020.0", "2020-01-01"),