From 92eafec6edaf8f714421d6f1cf6b458dbde74582 Mon Sep 17 00:00:00 2001 From: Louis Auneau Date: Fri, 5 Dec 2025 18:09:28 -0500 Subject: [PATCH 1/2] fix $toMillis erasing timezone for timezone aware datetimes --- src/jsonata/functions.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/jsonata/functions.py b/src/jsonata/functions.py index 584ada7..85c3d25 100644 --- a/src/jsonata/functions.py +++ b/src/jsonata/functions.py @@ -2105,7 +2105,10 @@ def datetime_to_millis(timestamp: Optional[str], picture: Optional[str]) -> Opti dt = datetime.datetime.strptime(timestamp, "%Y") else: dt = datetime.datetime.fromisoformat(timestamp) - dt = dt.replace(tzinfo=datetime.timezone.utc) + + if dt.tzinfo is None: + return dt.replace(tzinfo=datetime.timezone.utc) + return int(dt.timestamp() * 1000) # try: # size = len(timestamp) From a5da62b5efee095f80df0ce6236c1dd5170237e4 Mon Sep 17 00:00:00 2001 From: Louis Auneau Date: Mon, 8 Dec 2025 08:39:27 -0500 Subject: [PATCH 2/2] fix jsonata toMillis --- src/jsonata/functions.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/jsonata/functions.py b/src/jsonata/functions.py index 85c3d25..a241714 100644 --- a/src/jsonata/functions.py +++ b/src/jsonata/functions.py @@ -2107,7 +2107,7 @@ def datetime_to_millis(timestamp: Optional[str], picture: Optional[str]) -> Opti dt = datetime.datetime.fromisoformat(timestamp) if dt.tzinfo is None: - return dt.replace(tzinfo=datetime.timezone.utc) + dt = dt.replace(tzinfo=datetime.timezone.utc) return int(dt.timestamp() * 1000) # try: