JavaScript date string to Date object
Hannes Weninger
- javascript
Hallo,
ich hab gar nicht gewusst, dass es in JavaScript so kompliziert sein kann, aus diesem String '10.11.2016' ein Date- Object zu machen. Mit 2016-11-10 gehts einwandfrei, dass ich das im Date- Konstruktur setze, mit der Punkt- Notation geht leider gar nichts. Wie würdet Ihr das performant lösen, eine "." Split will ich nicht machen, das erscheint mir a bissl komisch.
Besten Danke für Eure Hilfe! Hannes
Hallo Hannes Weninger,
ich hab gar nicht gewusst, dass es in JavaScript so kompliziert sein kann, aus diesem String '10.11.2016' ein Date- Object zu machen. Mit 2016-11-10 gehts einwandfrei, dass ich das im Date- Konstruktur setze, mit der Punkt- Notation geht leider gar nichts. Wie würdet Ihr das performant lösen, eine "." Split will ich nicht machen, das erscheint mir a bissl komisch.
var st = "26.04.2013";
var pattern = /(\d{2})\.(\d{2})\.(\d{4})/;
var dt = new Date(st.replace(pattern,'$3-$2-$1'));
Quelle: StackOverflow
Bis demnächst
Matthias
Tach,
ich hab gar nicht gewusst, dass es in JavaScript so kompliziert sein kann, aus diesem String '10.11.2016' ein Date- Object zu machen. Mit 2016-11-10 gehts einwandfrei, dass ich das im Date- Konstruktur setze, mit der Punkt- Notation geht leider gar nichts. Wie würdet Ihr das performant lösen, eine "." Split will ich nicht machen, das erscheint mir a bissl komisch.
var st = "26.04.2013"; var pattern = /(\d{2})\.(\d{2})\.(\d{4})/; var dt = new Date(st.replace(pattern,'$3-$2-$1'));
da finde ich die Variante mit split aber schöner (perfomanter sollte sie auch sein (weil Verzicht auf RegExp und der Construktor nicht noch einen String parsen muss), aber das sollte keine Rolle spielen):
var st = "26.04.2013";
var stSplit = st.split(".");
var dt = new Date(stSplit[2],stSplit[1],stSplit[0]);
mfg
Woodfighter
Hi,
var st = "26.04.2013"; var stSplit = st.split("."); var dt = new Date(stSplit[2],stSplit[1],stSplit[0]);
Da fehlt doch noch was. IIRC braucht das Date-Objekt den Monat als Zahl zwischen 0 und 11, nicht zwischen 1 und 12.
cu,
Andreas a/k/a MudGuard
Tach,
var st = "26.04.2013"; var stSplit = st.split("."); var dt = new Date(stSplit[2],stSplit[1],stSplit[0]);
Da fehlt doch noch was. IIRC braucht das Date-Objekt den Monat als Zahl zwischen 0 und 11, nicht zwischen 1 und 12.
danke; da bin ich wiedermal drauf reingefallen und wo ich schon am verbessern bin, könnte man auch gleich noch Warnungen wegen fehlerhafter Oktaldarstellungen entfernen (zumindest das ist im Standard inzwischen wohl entfernt worden):
var st = "26.04.2013";
var stSplit = st.split(".");
var dt = new Date( parseInt(stSplit[2],10), parseInt(stSplit[1]-1,10), parseInt(stSplit[0],10));
mfg
Woodfighter
@@woodfighter
Da fehlt doch noch was. IIRC braucht das Date-Objekt den Monat als Zahl zwischen 0 und 11, nicht zwischen 1 und 12.
danke; da bin ich wiedermal drauf reingefallen
Auf solch horrenden Schwachsinn muss man auch erstmal kommen.
LLAP 🖖
Tach,
Auf solch horrenden Schwachsinn muss man auch erstmal kommen.
die Api ist halt im wesentlichen von der C- bzw. C++-Api (via Java) abgeleitet und damals waren halt andere Dinge wichtiger; aber ähnlich wie bei Java (<v8, danach gibt es ja mit time etwas mit dem man arbeiten kann) gibt es da bessere Klassen, wenn man viel mit Zeit arbeiten möchte.
mfg
Woodfighter