diff --git a/package.json b/package.json
index 0e25e0535a..77921afe54 100644
--- a/package.json
+++ b/package.json
@@ -26,6 +26,7 @@
"crypto-browserify": "^3.12.0",
"csvtojson": "^2.0.10",
"date-fns": "^2.28.0",
+ "date-fns-tz": "^1.3.7",
"dedent": "^0.7.0",
"dotenv": "^9.0.2",
"eslint": "^7.5.0",
diff --git a/src/components/ContestTile.js b/src/components/ContestTile.js
index 07b7227737..117bcb9688 100644
--- a/src/components/ContestTile.js
+++ b/src/components/ContestTile.js
@@ -6,6 +6,7 @@ import { getDates } from "../utils/time";
import ClientOnly from "./ClientOnly";
import Countdown from "./Countdown";
import SponsorLink from "./SponsorLink";
+import { format } from "date-fns";
const ContestTile = ({ contest, updateContestStatus, user }) => {
const {
@@ -58,7 +59,13 @@ const ContestTile = ({ contest, updateContestStatus, user }) => {
{t.contestStatus === "soon" || t.contestStatus === "active" ? (
- {t.contestStatus === "soon" ? "Starts:" : "Ends:"}
+ {/* @todo: style these dates */}
+ {t.contestStatus === "active" && (
+ Ends {t.endTime}
+ )}
+ {t.contestStatus === "soon" && (
+ Starts {t.startTime}
+ )}
{
@@ -66,6 +69,24 @@ const getDates = (start, end) => {
}
const daysDuration = differenceInCalendarDays(endDate, startDate);
+ const parsedEndTime = parseISO(end);
+ const parsedStartTime = parseISO(start);
+ const endUtc = format(
+ utcToZonedTime(parsedEndTime, "UTC"),
+ "d MMMM - h:mm a zzz",
+ {
+ timeZone: "UTC",
+ }
+ );
+ const startUtc = format(
+ utcToZonedTime(parsedStartTime, "UTC"),
+ "d MMMM - h:mm a zzz",
+ {
+ timeZone: "UTC",
+ }
+ );
+ const endLocal = format(endDate, "(d MMMM - h:mm a zzz)");
+ const startLocal = format(startDate, "(d MMMM - h:mm a zzz)");
const t = {
contestStatus,
@@ -73,6 +94,8 @@ const getDates = (start, end) => {
end: endTime,
startDay: isValid(startDate) ? format(startDate, "d MMMM yyyy") : "",
endDay: isValid(endDate) ? format(endDate, "d MMMM yyyy") : "",
+ startTime: isValid(startDate) ? startUtc + " " + startLocal : "",
+ endTime: isValid(endDate) ? endUtc + " " + endLocal : "",
daysDuration,
};
diff --git a/yarn.lock b/yarn.lock
index 57c9963460..f214f490a7 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -6834,6 +6834,11 @@ dataloader@^1.4.0:
resolved "https://registry.yarnpkg.com/dataloader/-/dataloader-1.4.0.tgz#bca11d867f5d3f1b9ed9f737bd15970c65dff5c8"
integrity sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw==
+date-fns-tz@^1.3.7:
+ version "1.3.7"
+ resolved "https://registry.yarnpkg.com/date-fns-tz/-/date-fns-tz-1.3.7.tgz#e8e9d2aaceba5f1cc0e677631563081fdcb0e69a"
+ integrity sha512-1t1b8zyJo+UI8aR+g3iqr5fkUHWpd58VBx8J/ZSQ+w7YrGlw80Ag4sA86qkfCXRBLmMc4I2US+aPMd4uKvwj5g==
+
date-fns@^1.27.2:
version "1.30.1"
resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c"