aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Fischer <florian.fischer@muhq.space>2026-10-02 15:49:05 +0200
committerFlorian Fischer <florian.fischer@muhq.space>2026-10-02 15:49:05 +0200
commit349262b8c82c96ad8c4237d2a191d4b7ba208b13 (patch)
treea6c4bbbb35f0007c1d7771f01752577648239e55
parent4a8235b96f3e6b3a45d8a34a94a1c30a1c0f9b80 (diff)
downloadbycs-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.ts4
-rw-r--r--src/utils-common.ts26
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]));
+}