Skip to content

Commit c06a344

Browse files
committed
fix timestamps
1 parent bbe99d2 commit c06a344

3 files changed

Lines changed: 17 additions & 2 deletions

File tree

static/js/task.js

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -615,7 +615,16 @@ function formatUserDateTime(value) {
615615
return '--/--/---- --:--';
616616
}
617617

618-
const parsedDate = new Date(value);
618+
let normalizedValue = value;
619+
if (typeof normalizedValue === 'string') {
620+
const trimmed = normalizedValue.trim();
621+
const hasTimezone = /(?:Z|[+-]\d{2}:\d{2})$/i.test(trimmed);
622+
if (!hasTimezone) {
623+
normalizedValue = `${trimmed.replace(' ', 'T')}Z`;
624+
}
625+
}
626+
627+
const parsedDate = new Date(normalizedValue);
619628
if (Number.isNaN(parsedDate.getTime())) {
620629
return '--/--/---- --:--';
621630
}

task_database.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -333,6 +333,8 @@ def __datetime_to_iso(value) -> str | None:
333333
if value is None:
334334
return None
335335
if isinstance(value, datetime):
336+
if value.tzinfo is None:
337+
value = value.replace(tzinfo=timezone.utc)
336338
return value.isoformat()
337339
return str(value)
338340

user_dao.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from math import floor
22
import tasklists
33
from dataclasses import dataclass
4-
from datetime import datetime
4+
from datetime import datetime, timezone
55
from bson.objectid import ObjectId
66
from task_types import UserTaskList, TierProgress, UserCompletedTask, UserCurrentTask, TaskData, PageTask, CollectionLogVerificationData
77

@@ -116,6 +116,8 @@ def completed_date_to_iso(value) -> str | None:
116116
if value is None:
117117
return None
118118
if isinstance(value, datetime):
119+
if value.tzinfo is None:
120+
value = value.replace(tzinfo=timezone.utc)
119121
return value.isoformat()
120122
if isinstance(value, str):
121123
parsed = None
@@ -124,6 +126,8 @@ def completed_date_to_iso(value) -> str | None:
124126
except ValueError:
125127
pass
126128
if parsed is not None:
129+
if parsed.tzinfo is None:
130+
parsed = parsed.replace(tzinfo=timezone.utc)
127131
return parsed.isoformat()
128132
return value
129133
return str(value)

0 commit comments

Comments
 (0)