fix(frontend): show local date in history cards (not UTC)
HistoryDatabase.vue formatDate() derived the day from UTC (new Date(dateStr).toISOString().slice(0, 10)) while the sibling formatTime() uses local hours/minutes. The backend sends naive-local timestamps (datetime.now().isoformat()), so for any non-UTC client the two disagree by up to a day -- e.g. for the project's UTC+8 audience a record created 00:00-08:00 local shows the previous day's date next to the current time. Derive the date from local components so it matches the time shown.
This commit is contained in:
parent
96096ea0ff
commit
e6a502121b
|
|
@ -312,7 +312,13 @@ const formatDate = (dateStr) => {
|
|||
if (!dateStr) return ''
|
||||
try {
|
||||
const date = new Date(dateStr)
|
||||
return date.toISOString().slice(0, 10)
|
||||
// Use local date components (like formatTime below) so the displayed day
|
||||
// matches the displayed time. toISOString() converts to UTC and can show
|
||||
// the wrong day for non-UTC clients near midnight.
|
||||
const year = date.getFullYear()
|
||||
const month = String(date.getMonth() + 1).padStart(2, '0')
|
||||
const day = String(date.getDate()).padStart(2, '0')
|
||||
return `${year}-${month}-${day}`
|
||||
} catch {
|
||||
return dateStr?.slice(0, 10) || ''
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue