diff options
| author | Florian Fischer <florian.fischer@muhq.space> | 2026-10-02 15:49:05 +0200 |
|---|---|---|
| committer | Florian Fischer <florian.fischer@muhq.space> | 2026-10-02 15:49:05 +0200 |
| commit | 349262b8c82c96ad8c4237d2a191d4b7ba208b13 (patch) | |
| tree | a6c4bbbb35f0007c1d7771f01752577648239e55 | |
| parent | 4a8235b96f3e6b3a45d8a34a94a1c30a1c0f9b80 (diff) | |
| download | bycs-sol-349262b8c82c96ad8c4237d2a191d4b7ba208b13.tar.gz bycs-sol-349262b8c82c96ad8c4237d2a191d4b7ba208b13.zip | |
parse the dates provided by moodle manually
The reported date values are in german locale and can not be parsed
by my browser for example.
| -rw-r--r-- | src/graduation-common.ts | 4 | ||||
| -rw-r--r-- | src/utils-common.ts | 26 |
2 files changed, 29 insertions, 1 deletions
diff --git a/src/graduation-common.ts b/src/graduation-common.ts index 0652c59..2d1f21d 100644 --- a/src/graduation-common.ts +++ b/src/graduation-common.ts @@ -6,6 +6,8 @@ import EntdeckerPng from "../assets/Entdecker.png"; import NavigatorPng from "../assets/Navigator.png"; import PioneerPng from "../assets/Pioneer.png"; +import { parseMoodleDate } from "./utils-common.ts"; + const LEVEL_NAMES = ["Anwärter", "Entdecker", "Navigator", "Pionieer"]; const LEVEL_IMAGES = [ @@ -62,7 +64,7 @@ class GraduationChange { const change = JSON.parse(json); return new GraduationChange( Number(changeId), - new Date(date), + parseMoodleDate(date), Number(change.studentId), change.change, change.reason, diff --git a/src/utils-common.ts b/src/utils-common.ts index d644b10..055fee6 100644 --- a/src/utils-common.ts +++ b/src/utils-common.ts @@ -77,3 +77,29 @@ export function splitmix32(a: number) { return ((t = t ^ (t >>> 15)) >>> 0) / 4294967296; }; } + +const MOODLE_DATE_REGEX = /\w+, (\d+)\. (\w+) (\d+), (\d\d):(\d\d)/; +const MONTHS: { [m: string]: number } = { + Januar: 1, + Februar: 2, + März: 3, + April: 4, + Mai: 5, + Juni: 6, + Juli: 7, + August: 8, + September: 9, + Oktober: 9, + November: 10, + Dezember: 11, +}; + +export function parseMoodleDate(s: string) { + const match = MOODLE_DATE_REGEX.exec(s); + if (!match) { + return new Date(-1); + } + + const month = MONTHS[match[2]]; + return new Date(Number(match[3]), month, Number(match[1]), Number(match[4]), Number(match[4])); +} |
