From: Dessalines Date: Thu, 29 Jun 2023 03:09:25 +0000 (-0400) Subject: Fixing timezone issue with date-fns. Fixes #1680 (#1681) X-Git-Url: http://these/git/%7B%60%24%7BwebArchiveUrl%7D/%22%7B%7D/readmes/%7B%7D/%7Bthis.props.src%7D?a=commitdiff_plain;h=a2716d5f48a5f7c00b385234938bd872e3ff2c74;p=lemmy-ui.git Fixing timezone issue with date-fns. Fixes #1680 (#1681) Co-authored-by: Alec Armbruster <35377827+alectrocute@users.noreply.github.com> --- diff --git a/package.json b/package.json index e5c1fa7..2850984 100644 --- a/package.json +++ b/package.json @@ -52,6 +52,7 @@ "cross-fetch": "^3.1.5", "css-loader": "^6.7.3", "date-fns": "^2.30.0", + "date-fns-tz": "^2.0.0", "emoji-mart": "^5.4.0", "emoji-short-name": "^2.0.0", "express": "~4.18.2", diff --git a/src/shared/components/common/moment-time.tsx b/src/shared/components/common/moment-time.tsx index ec97eb4..24bd3c7 100644 --- a/src/shared/components/common/moment-time.tsx +++ b/src/shared/components/common/moment-time.tsx @@ -1,5 +1,5 @@ import { capitalizeFirstLetter, formatPastDate } from "@utils/helpers"; -import format from "date-fns/format"; +import { formatInTimeZone } from "date-fns-tz"; import parseISO from "date-fns/parseISO"; import { Component } from "inferno"; import { I18NextService } from "../../services"; @@ -13,7 +13,9 @@ interface MomentTimeProps { } function formatDate(input: string) { - return format(parseISO(input), "PPPPpppp"); + const tz = Intl.DateTimeFormat().resolvedOptions().timeZone; + const parsed = parseISO(input + "Z"); + return formatInTimeZone(parsed, tz, "PPPPpppp"); } export class MomentTime extends Component { diff --git a/src/shared/utils/helpers/format-past-date.ts b/src/shared/utils/helpers/format-past-date.ts index 78bc2a2..5bef4e8 100644 --- a/src/shared/utils/helpers/format-past-date.ts +++ b/src/shared/utils/helpers/format-past-date.ts @@ -2,11 +2,8 @@ import formatDistanceStrict from "date-fns/formatDistanceStrict"; import parseISO from "date-fns/parseISO"; export default function (dateString?: string) { - return formatDistanceStrict( - parseISO(dateString ?? Date.now().toString()), - new Date(), - { - addSuffix: true, - } - ); + const parsed = parseISO((dateString ?? Date.now().toString()) + "Z"); + return formatDistanceStrict(parsed, new Date(), { + addSuffix: true, + }); } diff --git a/yarn.lock b/yarn.lock index 46fcba1..57cde87 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3237,6 +3237,11 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" +date-fns-tz@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/date-fns-tz/-/date-fns-tz-2.0.0.tgz#1b14c386cb8bc16fc56fe333d4fc34ae1d1099d5" + integrity sha512-OAtcLdB9vxSXTWHdT8b398ARImVwQMyjfYGkKD2zaGpHseG2UPHbHjXELReErZFxWdSLph3c2zOaaTyHfOhERQ== + date-fns@^2.30.0: version "2.30.0" resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.30.0.tgz#f367e644839ff57894ec6ac480de40cae4b0f4d0"