From ffbd43a7e5c58033cc80d78d3eceffbf28bfeda6 Mon Sep 17 00:00:00 2001 From: Alex Mickelson Date: Wed, 21 Aug 2024 22:03:19 -0600 Subject: [PATCH] dates stuff --- .../local/quiz/utils/quizMarkdownUtils.ts | 25 ++++++++++++------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/nextjs/src/models/local/quiz/utils/quizMarkdownUtils.ts b/nextjs/src/models/local/quiz/utils/quizMarkdownUtils.ts index 9ecc095..07c8faa 100644 --- a/nextjs/src/models/local/quiz/utils/quizMarkdownUtils.ts +++ b/nextjs/src/models/local/quiz/utils/quizMarkdownUtils.ts @@ -38,22 +38,29 @@ const parseNumberOrThrow = (value: string, label: string): number => { }; const parseDateOrThrow = (value: string, label: string): string => { - const date = new Date(value); + const [datePart, timePart] = value.split(" "); + const [day, month, year] = datePart.split("/").map(Number); + const [hours, minutes, seconds] = timePart.split(":").map(Number); + const date = new Date(year, month - 1, day, hours, minutes, seconds); + if (isNaN(date.getTime())) { throw new Error(`Error with ${label}: ${value}`); } - const day = String(date.getDate()).padStart(2, "0"); - const month = String(date.getMonth() + 1).padStart(2, "0"); // Months are zero-based - const year = date.getFullYear(); - const hours = String(date.getHours()).padStart(2, "0"); - const minutes = String(date.getMinutes()).padStart(2, "0"); - const seconds = String(date.getSeconds()).padStart(2, "0"); + const stringDay = String(date.getDate()).padStart(2, "0"); + const stringMonth = String(date.getMonth() + 1).padStart(2, "0"); // Months are zero-based + const stringYear = date.getFullYear(); + const stringHours = String(date.getHours()).padStart(2, "0"); + const stringMinutes = String(date.getMinutes()).padStart(2, "0"); + const stringSeconds = String(date.getSeconds()).padStart(2, "0"); - return `${day}/${month}/${year} ${hours}:${minutes}:${seconds}`; + return `${stringDay}/${stringMonth}/${stringYear} ${stringHours}:${stringMinutes}:${stringSeconds}`; }; const parseDateOrNull = (value: string): string | undefined => { - const date = new Date(value); + const [datePart, timePart] = value.split(" "); + const [day, month, year] = datePart.split("/").map(Number); + const [hours, minutes, seconds] = timePart.split(":").map(Number); + const date = new Date(year, month - 1, day, hours, minutes, seconds); return isNaN(date.getTime()) ? undefined : date.toISOString(); };