fix: local-time timestamps include offset (#14771) (thanks @0xRaini)

This commit is contained in:
Peter Steinberger
2026-02-12 17:53:59 +01:00
parent 468414cac4
commit 2b5df1dfea
4 changed files with 74 additions and 15 deletions

View File

@@ -72,11 +72,25 @@ export function formatLogTimestamp(
if (Number.isNaN(parsed.getTime())) {
return value;
}
const formatLocalIsoWithOffset = (now: Date) => {
const year = now.getFullYear();
const month = String(now.getMonth() + 1).padStart(2, "0");
const day = String(now.getDate()).padStart(2, "0");
const h = String(now.getHours()).padStart(2, "0");
const m = String(now.getMinutes()).padStart(2, "0");
const s = String(now.getSeconds()).padStart(2, "0");
const ms = String(now.getMilliseconds()).padStart(3, "0");
const tzOffset = now.getTimezoneOffset();
const tzSign = tzOffset <= 0 ? "+" : "-";
const tzHours = String(Math.floor(Math.abs(tzOffset) / 60)).padStart(2, "0");
const tzMinutes = String(Math.abs(tzOffset) % 60).padStart(2, "0");
return `${year}-${month}-${day}T${h}:${m}:${s}.${ms}${tzSign}${tzHours}:${tzMinutes}`;
};
let timeString: string;
if (localTime) {
const tzoffset = parsed.getTimezoneOffset() * 60000; // offset in milliseconds
const localISOTime = new Date(parsed.getTime() - tzoffset).toISOString().slice(0, -1);
timeString = localISOTime;
timeString = formatLocalIsoWithOffset(parsed);
} else {
timeString = parsed.toISOString();
}