From f4b47cf737d6e326e6be5b90edf6cc6d9d79455b Mon Sep 17 00:00:00 2001 From: Nis Martensen Date: Thu, 11 Feb 2021 19:33:51 +0100 Subject: [PATCH 1/3] datetime test: in Excel, serial date 1 is 1900-01-01 --HG-- branch : 3.0 --- openpyxl/utils/tests/test_datetime.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/openpyxl/utils/tests/test_datetime.py b/openpyxl/utils/tests/test_datetime.py index e51bca66..c4051f34 100644 --- a/openpyxl/utils/tests/test_datetime.py +++ b/openpyxl/utils/tests/test_datetime.py @@ -102,7 +102,8 @@ def test_to_excel_mac(value, expected): (0.125, time(3, 0)), (42126.958333333219, datetime(2015, 5, 2, 23, 0, 0, 0)), (42126.999999999884, datetime(2015, 5, 3, 0, 0, 0)), - (0.9999999995, datetime(1899, 12, 31, 0, 0)), + (0.9999999995, datetime(1900, 1, 1)), + (1, datetime(1900, 1, 1)), (-0.25, datetime(1899, 12, 29, 18, 0, 0)), (None, None), ]) -- GitLab From 49d0f376245ba001f81e63645a25dc5d0fd02453 Mon Sep 17 00:00:00 2001 From: Nis Martensen Date: Thu, 11 Feb 2021 19:45:27 +0100 Subject: [PATCH 2/3] datetime.from_excel(): do not jump at datevalue 1 --HG-- branch : 3.0 --- openpyxl/utils/datetime.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openpyxl/utils/datetime.py b/openpyxl/utils/datetime.py index 5d381e26..1a997dfd 100644 --- a/openpyxl/utils/datetime.py +++ b/openpyxl/utils/datetime.py @@ -89,7 +89,7 @@ def from_excel(value, epoch=WINDOWS_EPOCH): diff = datetime.timedelta(milliseconds=round(fraction * SECS_PER_DAY * 1000)) if 0 <= value < 1 and diff.days == 0: return days_to_time(diff) - if 1 < value < 60 and epoch == WINDOWS_EPOCH: + if 1 <= value < 60 and epoch == WINDOWS_EPOCH: day += 1 return epoch + datetime.timedelta(days=day) + diff -- GitLab From 957643d2d04effdbc0821bef4a246a32318d8ea5 Mon Sep 17 00:00:00 2001 From: Nis Martensen Date: Mon, 15 Feb 2021 18:22:03 +0100 Subject: [PATCH 3/3] adapt condition to work correctly with millisecond rounding --HG-- branch : 3.0 --- openpyxl/utils/datetime.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openpyxl/utils/datetime.py b/openpyxl/utils/datetime.py index 1a997dfd..06b0c09b 100644 --- a/openpyxl/utils/datetime.py +++ b/openpyxl/utils/datetime.py @@ -89,7 +89,7 @@ def from_excel(value, epoch=WINDOWS_EPOCH): diff = datetime.timedelta(milliseconds=round(fraction * SECS_PER_DAY * 1000)) if 0 <= value < 1 and diff.days == 0: return days_to_time(diff) - if 1 <= value < 60 and epoch == WINDOWS_EPOCH: + if 0 < value < 60 and epoch == WINDOWS_EPOCH: day += 1 return epoch + datetime.timedelta(days=day) + diff -- GitLab