From c06a3446c6243161703650e89fabfe4cc8d53a05 Mon Sep 17 00:00:00 2001 From: Gerni <47844854+mgerni@users.noreply.github.com> Date: Thu, 12 Mar 2026 20:29:51 -0400 Subject: [PATCH] fix timestamps --- static/js/task.js | 11 ++++++++++- task_database.py | 2 ++ user_dao.py | 6 +++++- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/static/js/task.js b/static/js/task.js index f563dfa..a4b688d 100644 --- a/static/js/task.js +++ b/static/js/task.js @@ -615,7 +615,16 @@ function formatUserDateTime(value) { return '--/--/---- --:--'; } - const parsedDate = new Date(value); + let normalizedValue = value; + if (typeof normalizedValue === 'string') { + const trimmed = normalizedValue.trim(); + const hasTimezone = /(?:Z|[+-]\d{2}:\d{2})$/i.test(trimmed); + if (!hasTimezone) { + normalizedValue = `${trimmed.replace(' ', 'T')}Z`; + } + } + + const parsedDate = new Date(normalizedValue); if (Number.isNaN(parsedDate.getTime())) { return '--/--/---- --:--'; } diff --git a/task_database.py b/task_database.py index 5eb98f1..d9580bf 100644 --- a/task_database.py +++ b/task_database.py @@ -333,6 +333,8 @@ def __datetime_to_iso(value) -> str | None: if value is None: return None if isinstance(value, datetime): + if value.tzinfo is None: + value = value.replace(tzinfo=timezone.utc) return value.isoformat() return str(value) diff --git a/user_dao.py b/user_dao.py index 6ae70a0..45b0d5f 100644 --- a/user_dao.py +++ b/user_dao.py @@ -1,7 +1,7 @@ from math import floor import tasklists from dataclasses import dataclass -from datetime import datetime +from datetime import datetime, timezone from bson.objectid import ObjectId from task_types import UserTaskList, TierProgress, UserCompletedTask, UserCurrentTask, TaskData, PageTask, CollectionLogVerificationData @@ -116,6 +116,8 @@ def completed_date_to_iso(value) -> str | None: if value is None: return None if isinstance(value, datetime): + if value.tzinfo is None: + value = value.replace(tzinfo=timezone.utc) return value.isoformat() if isinstance(value, str): parsed = None @@ -124,6 +126,8 @@ def completed_date_to_iso(value) -> str | None: except ValueError: pass if parsed is not None: + if parsed.tzinfo is None: + parsed = parsed.replace(tzinfo=timezone.utc) return parsed.isoformat() return value return str(value)