Moin,
vorab: Ja ich weiß, dass es hier um JavaScript geht und es eigentlich ins andere Unterforum gehört, doch mir geht es nicht um die Sprache, sondern nur um's Konzept. Hilfestellungen in Python, C oder sogar Brainfuck sind gerne gesehen, die Umsetzung in JS wird der einfachere Teil sein.
Ich ziehe mir Wasserstände von einer Website, doch diese gibt mir nur die Uhrzeit und den Wasserstand zurück, jedoch nicht das Datum. Das Problem ist nun, dass der Zeitraum über 24h läuft und es ohne Datumsangabe zu doppelten Uhrzeiten kommt.
Beispiel des aktuellen Arrays: [["23:13", 361], ["23:47", 369], ["23:58", 379], ["00:03", 385], ["00:18", 391], ["01:36", 396], ..., ["00:31", 396]]
(Die Anzahl der Elemente und Uhrzeiten sind immer unterschiedlich/unregelmäßig. Immerhin die Reihenfolge stimmt )
Nun brauche ich eine zuverlässige und elegantere Lösung, die mir zu jeder Uhrzeit das richtige Datum liefert, damit der endgültige Zeitstempel so vorliegt: "10.01.2019 17:14"
Mein erster Ansatz:
- Halte die Differenz der unterschiedlichen Tage in einer Variable fest
- Vergleiche immer zwei Uhrzeiten: Wenn i-1 > i (beginnend mit Index 1), dann ist es bereits der nächste Tag (Heute+1). Bsp: 23:58 > 00:03 ==> 00:03 ist bereits der nächste Tag ==> Variable TagesDifferenz += 1
- Füge das heutige Datum + TagesDifferenz einer Uhrzeit zu. Bsp: (11.01.2019 + 1) 00:03, weil diese Uhrzeit ja schon der nächste Tag ist
-
Ich habe noch eine Art Sicherheit eingebaut, doch ich weiß gerade nicht mehr für welchen Fall das gedacht war . Wenn die Minute des ersten Datensatzes > aktuelle Minute, dann TagesDifferenz -= 1. Ist wahrscheinlich für den Fall um die 0 Uhr herum...
Mir ist es wieder eingefallen. Bsp.: Es ist 00:05 Uhr; die ersten beiden Datensätze sind 23:50 und 00:10. Weil nun 23:50 > 00:10 ist, muss man für 00:10 einen Tag vom heutigen Tag drauflegen. Doch, es ist ja schon 00:05 und das ist derselbe Tag wie 00:10.
Deshalb vergleiche ich beim ersten Datensatz die Minute. 50 ist größer 10, deshalb ziehe ich einen Tag Differenz ab, der beim Vergleich 23:50 > 00:10 wieder dazuaddiert wird ==> -1 + 1 = 0 ==> 00:10 ist heute, weil es aktuell 00:05 Uhr ist.
Das funktioniert soweit ganz gut, doch was ist nun bei einem Monatswechsel? 31.01 + 1 sollte nicht in 32.01 resultieren, bei einem Jahreswechsel das gleiche Spiel.
Danke
Kelvin