javascript Time Überlappungen
Hannes Weninger
- javascript
Hallo,
ich hätte eine Frage zum Handling von Zeiten in javascript, und zwar hab ich ein Array von Objekten, wo jedes Objekt eine StartZeit und eine Endzeit hat, z.B.
var myObjectArray = [];
var myObject1 = {};
myObject1.startTime = '08:00';
myObject1.endTime = '12:30';
...
var myObject2 = {};
myObject2.startTime = '11:20';
myObject2.endTime = '18:30';
...
myObjectArray.push(myObject1);
myObjectArray.push(myObject2);
Ich bin jetzt gerade am Überlegen, wie ich am besten den check mache, ob sich die Zeiten im Array "myObjectArray" überlappen. Hat vielleicht jemand eine Idee, wie ich das am Besten machen könnte?
Danke! Hannes
Hallo,
schau dir mal das Date-Objekt an, und da speziell getTime. Wenn du die Zeiten entsprechend umgerechnet hast, geht der Vergleich problemlos mit dem if-Statement.
Gruß
Jürgen
Lieber JürgenB,
schau dir mal das Date-Objekt an
da wollen wir aber schnell noch eine Funktion hinterher schieben, mit der der OP sein Zeitformat (HH:mm) wieder herstellen kann, sonst nützt ihm der Hinweis vielleicht nicht viel! Dazu benötigt man die Methoden getHours() und getMinutes():
function date2hhmm (d) {
var h = d.getHours(),
m = d.getMinutes();
return (h < 10 ? "0" : "") + h + ":" + (m < 10 ? "0" : "") + m;
}
Wie schon angedeutet, kann man von zwei Date-Objekten mittels der getTime()-Methode auf die Millisekunde genau sagen, welches einen späteren Zeitpunkt (größerer Zahlenwert der Anzahl Millisekunden) beschreibt. Inwiefern man das Objekt als solches mittels <
oder >
zuverlässig vergleichen kann, ist mir nicht bekannt.
Liebe Grüße,
Felix Riesterer.
Moin,
var myObjectArray = []; var myObject1 = {}; myObject1.startTime = '08:00'; myObject1.endTime = '12:30'; ... var myObject2 = {}; myObject2.startTime = '11:20'; myObject2.endTime = '18:30'; ... myObjectArray.push(myObject1); myObjectArray.push(myObject2);
ich möchte mich zunächst Jürgen anschließen und dir zur Verwendung des Date-Objekts raten. Dann kannst du auch zwei Zeiten vergleichen, ohne auf die genaue Schreibweise (führende Null, Trennzeichen) achten zu müssen, wie es jetzt bei deiner String-Notation der Fall ist.
Ich bin jetzt gerade am Überlegen, wie ich am besten den check mache, ob sich die Zeiten im Array "myObjectArray" überlappen. Hat vielleicht jemand eine Idee, wie ich das am Besten machen könnte?
Ich würde das Array zunächst nach den Start-Zeitpunkten der Einträge sortieren, und dann vom ersten bis zum vorletzten(!) Eintrag darüber iterieren. Stellst du irgendwo fest, dass
Beginn[n+1] < Ende[n]
ist, dann liegt eine Überlappung der Intervalle vor.
So long,
Martin
@@Der Martin
Ich würde das Array zunächst nach den Start-Zeitpunkten der Einträge sortieren
Ich nicht. Das dürfte unnötig teuer sein.
Da man sowieso einmal durch das Array iteriert, bestimmt man dabei das Maximum der startTime
-Werte und das Minimum der endTime
-Werte. Ist ersteres größer als letzteres, liegt eine Überlappung vor. Dann kann man die Schleife vorzeitig abbrechen.
LLAP 🖖
Hallo,
Da man sowieso einmal durch das Array iteriert, bestimmt man dabei das Maximum der
startTime
-Werte und das Minimum derendTime
-Werte. Ist ersteres größer als letzteres, liegt eine Überlappung vor. Dann kann man die Schleife vorzeitig abbrechen.
?
Frühstück von 6 - 9
Mittag von 11 - 13
Keine Überlappung
max_start: 11
min_end: 9
max_start > min_end
doch eine Überlappung?
Gruß
Kalk
@@Tabellenkalk
Frühstück von 6 - 9
Mittag von 11 - 13
Keine Überlappungmax_start: 11
min_end: 9
max_start > min_end
doch eine Überlappung?
Man sollte zwischen max_end = 23 und min_start = 9 nicht posten.
LLAP 🖖
Hallo,
Man sollte zwischen max_end = 23 und min_start = 9 nicht posten.
Hättest du min_start = 8 geschrieben, hätte ich dir beipflichten können...
Gruß
Kalk
Hallo Tabellenkalk,
Man sollte zwischen max_end = 23 und min_start = 9 nicht posten.
Hättest du min_start = 8 geschrieben, hätte ich dir beipflichten können...
Warum stehen die Studenten immer um 9 auf? Damit sie es bis 22 Uhr in den Supermarkt schaffen.
Bis demnächst
Matthias
Lieber Hannes,
was genau ist Dein Anwendungsfall? Wenn man mehr darüber wüsste, könnte man Dir besser raten.
Liebe Grüße,
Felix Riesterer.
was genau ist Dein Anwendungsfall? Wenn man mehr darüber wüsste, könnte man Dir besser raten.
Ich habe ein oder mehrere Zeiten und der User kann Zeiten hinzufügen. Ich möchte ihm dann den Hinweis geben, wenn sich Zeiten überlappen.