From 59cee5b4dfd45bcb1652a440b03b9a12a9a76d7c Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sun, 30 Nov 2025 20:23:08 +0530 Subject: [PATCH] Use a named local timezone for better display of historical dates in the local timezone See #2133435 (Suggestion for timezone handling (linux example included)) --- pyproject.toml | 2 ++ src/calibre/utils/iso8601.py | 9 ++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index f6f85d264b..875bedf95d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -54,6 +54,8 @@ dependencies = [ "PyQt6_WebEngine == 6.8.0", "MacFSEvents == 0.8.4; sys_platform == 'darwin'", "xxhash == 3.3.0", + "tzdata == 2025.2", + "tzlocal == 5.3.1", ] [project.urls] diff --git a/src/calibre/utils/iso8601.py b/src/calibre/utils/iso8601.py index 3a95946c81..c4d58cdfa3 100644 --- a/src/calibre/utils/iso8601.py +++ b/src/calibre/utils/iso8601.py @@ -3,11 +3,18 @@ from datetime import datetime, timedelta, timezone +from zoneinfo import ZoneInfo + +import tzlocal from calibre_extensions import speedup utc_tz = timezone.utc -local_tz = datetime.now().astimezone().tzinfo +try: + tz_name = tzlocal.get_localzone_name() + local_tz = ZoneInfo(tz_name) +except Exception: + local_tz = datetime.now().astimezone().tzinfo UNDEFINED_DATE = datetime(101,1,1, tzinfo=utc_tz)