From 8ed98be4a281b1cd5ab21a0988ab238a96ab0f6d Mon Sep 17 00:00:00 2001 From: "F.W. Dekker" Date: Sat, 13 Nov 2021 11:18:09 +0100 Subject: [PATCH] Calculate week day from UTC date Thanks to Scott Ventura for reporting this issue! I hope it solves it. --- package-lock.json | Bin 212432 -> 209780 bytes package.json | 12 +++++----- src/main/js/main.js | 53 ++++++++++++++++++++++++-------------------- 3 files changed, 35 insertions(+), 30 deletions(-) diff --git a/package-lock.json b/package-lock.json index d652180e6184b529ce258dd14d2a620d97949493..4f24e3b143300eead02dbb4d8c8699bff5f56d2b 100644 GIT binary patch delta 15035 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 KgBw4%@qYmtmj&Pe delta 15802 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 UX5@PDMMSQ>wEia0#(dlVFITqVTL1t6 diff --git a/package.json b/package.json index 000fe11..3f448ee 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "doomsday", - "version": "1.3.16", + "version": "1.3.17", "description": "Test your mastery of Conway's Doomsday rule.", "author": "F.W. Dekker", "browser": "dist/bundle.js", @@ -16,15 +16,15 @@ "deploy": "grunt deploy" }, "devDependencies": { - "grunt": "^1.4.0", - "grunt-cli": "^1.4.2", + "grunt": "^1.4.1", + "grunt-cli": "^1.4.3", "grunt-contrib-clean": "^2.0.0", "grunt-contrib-copy": "^1.0.0", "grunt-contrib-watch": "^1.1.0", "grunt-focus": "^1.0.0", "grunt-text-replace": "^0.4.0", - "grunt-webpack": "^4.0.3", - "webpack": "^5.36.0", - "webpack-cli": "^4.6.0" + "grunt-webpack": "^5.0.0", + "webpack": "^5.64.0", + "webpack-cli": "^4.9.1" } } diff --git a/src/main/js/main.js b/src/main/js/main.js index 011ddd0..807ce12 100644 --- a/src/main/js/main.js +++ b/src/main/js/main.js @@ -227,7 +227,7 @@ class ToggleableSection { /** * A wrapper around the good ol' `Date` class that provides a bunch of useful Doomsday-specific methods. * - * @property {Date} the underlying date + * @property {Date} date the underlying date */ class DoomsdayDate { /** @@ -256,7 +256,7 @@ class DoomsdayDate { */ getCenturyAnchorString() { const centuryAnchorNumber = (5 * (this.getCentury() % 4)) % 7 + 2; - return DoomsdayDate.dayNumberToString(centuryAnchorNumber); + return DoomsdayDate.getWeekDayOf(centuryAnchorNumber); }; /** @@ -268,7 +268,7 @@ class DoomsdayDate { const anchorDate = new Date(this.date); anchorDate.setDate(4); // 4th anchorDate.setMonth(3); // April - return DoomsdayDate.dayNumberToString(anchorDate.getDay()); + return DoomsdayDate.getWeekDayOf(anchorDate); }; /** @@ -277,32 +277,36 @@ class DoomsdayDate { * @return {string} the day of the week of this `DoomsdayDate` */ getWeekdayString() { - return DoomsdayDate.dayNumberToString(this.date.getDay()); + return DoomsdayDate.getWeekDayOf(this.date); }; /** - * Returns the name of the day given its 0-based index, where 0 is `Sunday`. + * Returns the week day of [date]. * - * @param dayNumber {number} the number of the day, as returned by `Date`'s `#getDay` function. - * @return {string} the name of the day given its 0-based index, where 0 is `Sunday` + * @param date {Date|number} the date to get the week day of; if it is a `number`, then 0 corresponds to Sunday + * @return {string} the name of the week day corresponding to [date] */ - static dayNumberToString(dayNumber) { - switch (dayNumber % 7) { - case 0: - return "Sunday"; - case 1: - return "Monday"; - case 2: - return "Tuesday"; - case 3: - return "Wednesday"; - case 4: - return "Thursday"; - case 5: - return "Friday"; - case 6: - return "Saturday"; + static getWeekDayOf(date) { + if (date instanceof Date) { + return date.toLocaleString("en-US", {timeZone: "GMT", weekday: "long"}); + } else { + switch (date % 7) { + case 0: + return "Sunday"; + case 1: + return "Monday"; + case 2: + return "Tuesday"; + case 3: + return "Wednesday"; + case 4: + return "Thursday"; + case 5: + return "Friday"; + case 6: + return "Saturday"; + } } }; @@ -341,7 +345,7 @@ class DoomsdayDate { * @return {DoomsdayDate} a random date */ static random() { - // TODO Give custom dates to this method + // TODO Give custom date range to this method const minDate = new Date("0001-01-01").getTime() / 86400000; const maxDate = new Date("9999-12-31").getTime() / 86400000; return new DoomsdayDate(new Date(generateRandom(minDate, maxDate) * 86400000)); @@ -475,6 +479,7 @@ doAfterLoad(() => { quizDate = DoomsdayDate.random(); console.log("# Reset"); console.log(`New date: ${quizDate.date.toISOString().substr(0, 10)}`); + console.log(` ${quizDate.date}`); console.log(`Century#: ${quizDate.getCentury()}`); console.log(`Century: ${quizDate.getCenturyAnchorString()}`); console.log(`Year: ${quizDate.getYearAnchorString()}`);