diff --git a/src/renderer/components/virtual-table/index.tsx b/src/renderer/components/virtual-table/index.tsx index c21bbe0c..fc02696c 100644 --- a/src/renderer/components/virtual-table/index.tsx +++ b/src/renderer/components/virtual-table/index.tsx @@ -41,7 +41,12 @@ import { useFixedTableHeader } from '/@/renderer/components/virtual-table/hooks/ import { NoteCell } from '/@/renderer/components/virtual-table/cells/note-cell'; import { RowIndexCell } from '/@/renderer/components/virtual-table/cells/row-index-cell'; import i18n from '/@/i18n/i18n'; -import { formatDateAbsolute, formatDateRelative, formatSizeString } from '/@/renderer/utils/format'; +import { + formatDateAbsolute, + formatDateAbsoluteUTC, + formatDateRelative, + formatSizeString, +} from '/@/renderer/utils/format'; import { useTableChange } from '/@/renderer/hooks/use-song-change'; export * from './table-config-dropdown'; @@ -253,7 +258,7 @@ const tableColumns: { [key: string]: ColDef } = { GenericTableHeader(params, { position: 'center' }), headerName: i18n.t('table.column.releaseDate'), suppressSizeToFit: true, - valueFormatter: (params: ValueFormatterParams) => formatDateAbsolute(params.value), + valueFormatter: (params: ValueFormatterParams) => formatDateAbsoluteUTC(params.value), valueGetter: (params: ValueGetterParams) => params.data ? params.data.releaseDate : undefined, width: 130, diff --git a/src/renderer/features/albums/components/album-detail-header.tsx b/src/renderer/features/albums/components/album-detail-header.tsx index 98db7db9..cc672b8d 100644 --- a/src/renderer/features/albums/components/album-detail-header.tsx +++ b/src/renderer/features/albums/components/album-detail-header.tsx @@ -10,7 +10,7 @@ import { LibraryHeader, useSetRating } from '/@/renderer/features/shared'; import { useContainerQuery } from '/@/renderer/hooks'; import { AppRoute } from '/@/renderer/router/routes'; import { useCurrentServer } from '/@/renderer/store'; -import { formatDateAbsolute, formatDurationString } from '/@/renderer/utils'; +import { formatDateAbsoluteUTC, formatDurationString } from '/@/renderer/utils'; interface AlbumDetailHeaderProps { background: { @@ -42,7 +42,7 @@ export const AlbumDetailHeader = forwardRef( id: 'releaseDate', value: detailQuery?.data?.releaseDate && - `${releasePrefix} ${formatDateAbsolute(detailQuery?.data?.releaseDate)}`, + `${releasePrefix} ${formatDateAbsoluteUTC(detailQuery?.data?.releaseDate)}`, }, { id: 'songCount', @@ -62,7 +62,7 @@ export const AlbumDetailHeader = forwardRef( ]; if (originalDifferentFromRelease) { - const formatted = `♫ ${formatDateAbsolute(detailQuery!.data!.originalDate)}`; + const formatted = `♫ ${formatDateAbsoluteUTC(detailQuery!.data!.originalDate)}`; metadataItems.splice(0, 0, { id: 'originalDate', value: formatted, diff --git a/src/renderer/utils/format.tsx b/src/renderer/utils/format.tsx index 572905d2..0f2ce226 100644 --- a/src/renderer/utils/format.tsx +++ b/src/renderer/utils/format.tsx @@ -1,13 +1,20 @@ import dayjs from 'dayjs'; import relativeTime from 'dayjs/plugin/relativeTime'; +import utc from 'dayjs/plugin/utc'; import formatDuration from 'format-duration'; import type { Album, AlbumArtist, Song } from '/@/renderer/api/types'; import { Rating } from '/@/renderer/components/rating'; dayjs.extend(relativeTime); +dayjs.extend(utc); + +const DATE_FORMAT = 'MMM D, YYYY'; export const formatDateAbsolute = (key: string | null) => - key ? dayjs(key).format('MMM D, YYYY') : ''; + key ? dayjs(key).format(DATE_FORMAT) : ''; + +export const formatDateAbsoluteUTC = (key: string | null) => + key ? dayjs.utc(key).format(DATE_FORMAT) : ''; export const formatDateRelative = (key: string | null) => (key ? dayjs(key).fromNow() : '');