Fix improper timezone offsets

This commit is contained in:
Dustin Brett 2025-03-20 21:23:49 -07:00
parent a9589a9cb6
commit 47e227047d
6 changed files with 35 additions and 11 deletions

View File

@ -1,6 +1,6 @@
import { basename } from "path";
import extensions from "components/system/Files/FileEntry/extensions";
import { getExtension } from "utils/functions";
import { getExtension, getTZOffsetISOString } from "utils/functions";
import { ROOT_NAME } from "utils/constants";
export type DirectoryEntries = {
@ -90,7 +90,12 @@ const formatSize = (size?: number): string => {
};
const formatDate = (date?: Date): string =>
date?.toISOString().replace("T", " ").split(".")[0].slice(0, -3) || "";
date
? getTZOffsetISOString(date.getTime())
.replace("T", " ")
.split(".")[0]
.slice(0, -3)
: "";
export const createDirectoryIndex = (
url: string,

View File

@ -410,7 +410,10 @@ const useCommandInterpreter = (
const mDate = new Date(
getModifiedTime(filePath, fileStats)
);
const date = mDate.toISOString().slice(0, 10);
const date = getTZOffsetISOString(mDate.getTime()).slice(
0,
10
);
const time = timeFormatter.format(mDate).padStart(8, "0");
const isDirectory = fileStats.isDirectory();

View File

@ -52,6 +52,7 @@ import {
getGifJs,
getHtmlToImage,
getMimeType,
getTZOffsetISOString,
isSafari,
isYouTubeUrl,
resizeImage,
@ -894,7 +895,7 @@ export const getDateModified = (
format: Intl.DateTimeFormatOptions
): string => {
const modifiedTime = getModifiedTime(path, fullStats);
const date = new Date(modifiedTime).toISOString().slice(0, 10);
const date = getTZOffsetISOString(modifiedTime).slice(0, 10);
const time = new Intl.DateTimeFormat(DEFAULT_LOCALE, format).format(
modifiedTime
);

View File

@ -45,7 +45,9 @@ const getCommitHash = () => {
if (!commit) {
commit =
process.env.npm_package_gitHead?.slice(0, COMMIT_HASH_LENGTH - 1) ||
new Date().toISOString().slice(0, 10);
new Date(Date.now() - new Date().getTimezoneOffset() * 60000)
.toISOString()
.slice(0, 10);
}
return commit;

View File

@ -32,7 +32,9 @@ const buildFileSitemap = (path, excludePaths, callback) => {
xmlUrls.push(
callback(
`${author.url}/?url=${encodedUrlEntryPath}`,
stats.mtime.toISOString().substring(0, 10),
new Date(stats.mtime - date.getTimezoneOffset() * 60000)
.toISOString()
.substring(0, 10),
`${author.url}/${encodedUrlEntryPath}`
)
);

View File

@ -794,12 +794,23 @@ export const getFormattedSize = (size = 0, asKB = false): string => {
return `${size} bytes`;
};
export const getTZOffsetISOString = (): string => {
const date = new Date();
let timezoneOffset: number;
return new Date(
date.getTime() - date.getTimezoneOffset() * 60000
).toISOString();
export const getTZOffsetISOString = (timestamp?: number): string => {
let time = timestamp;
// eslint-disable-next-line no-undef-init
let date: Date | undefined = undefined;
if (!time) {
date = new Date();
time = date.getTime();
}
if (typeof timezoneOffset !== "number") {
timezoneOffset = (date || new Date()).getTimezoneOffset() * 60000;
}
return new Date(time - timezoneOffset).toISOString();
};
export const LOCAL_HOST = new Set(["127.0.0.1", "localhost"]);