Hallo Henry,
mit der Array-Methode map könnte das so aussehen.
Für ein Chartprogramm ist es sicherlich eine gute Idee, korrekte Datentypen zu erhalten. Wenn dein Chartprogramm das selbst tun kann, dann kannst Du die Typumwandlung in deinem Script auch wegfallen lassen.
WENN Du es selbst tun musst, steckst Du tief im „de-DE vs en-us“ und „UTC vs CET“ Sumpf. Aber erstmal das Codebeispiel:
const data = [
{ datetime: "2026-05-06 00:30:00",
daten1: "123", daten2: "34,56", daten5: "15.8.2005" },
{ datetime: "2026-05-06 00:40:00",
daten1: "125", daten2: "17,56", daten5: "17.8.2005" },
{ datetime: "2026-05-06 00:50:00",
daten1: "121", daten2: "24,96", daten5: "19.8.2005" },
];
const dataCurve1 = data.map(
entry => ({ x: entry.datetime,
y: parseInt(entry.daten1) })
);
const dataCurve2 = data.map(
entry => ({ x: entry.datetime,
y: parseFloat(entry.daten2.replace(",", ".")) })
);
const dataCurve5 = data.map(
entry => ({ x: entry.datetime,
y: parseGermanDate(entry.daten5) })
);
function parseGermanDate(dateString) {
const parts = dateString.split(".");
return new Date(parseInt(parts[2]),
parseInt(parts[1])-1,
parseInt(parts[0]));
return Date.UTC(parseInt(parts[2]),
parseInt(parts[1])-1,
parseInt(parts[0]));
return new Temporal.PlainDate(
parseInt(parts[2]),
parseInt(parts[1]),
parseInt(parts[0])
);
}
Für daten2 muss das Dezimalkomma in einen Dezimalpunkt umgewandelt werden. Einen Intl-Numberparser gibt es meines Wissens nicht. Ein replace-Aufruf ist die Minimallösung und setzt voraus, dass es sich um eine ansonsten korrekt aufgebaute Zahl handelt.
Für daten5 wird es richtig spannend. Date-Objekte, die aus Jahr, Monat und Tag erstellt werden, haben als Uhrzeit 0:00:00 lokaler Zeit. Das kann zu Abweichungen führen, wenn das Chartprogramm die UTC-Werte für das Datum abfragt. new Date(2026, 4, 6) liefert Dir den 6. Mai 2026 mit Zeitzonenoffset -120, d.h. wenn Du auf dieses Objekt getUTCDate() anwendest, bekommst Du eine 5 (weil die Zeit 2026-05-05T22:00:00 UTC ist). Wenn dein Chartprogramm so arbeitet, musst Du das Datum mit Date.UTC(year, month-1, day) erzeugen.
Wenn dein Chartprogramm und den Browser die Temporal-Klassen unterstützen, solltest Du das Problem umgehen und statt mit Date mit Temporal.PlainDate arbeiten. In dem Fall musst Du auch nicht 1 vom Monat abziehen.
Rolf
--
sumpsi - posui - obstruxi