Ich habe folgende Datenstruktur für die Aufgabe:Berechnung der nächsten Laufzeit für die Aufgabe
Task{
Start: 17:00:00
End: 20:00:00
Interval: 5
Days: [1, 2, 3, 6, 7]
}
Das ist also so etwas wie ein Zeitplan Einstellung für einige Aufgabe. Ich habe einen Windows-Dienst, der alle 5 Sekunden abhebt und einige Berechnungen durchführt, wenn es Zeit ist, die Aufgabe auszuführen. Es ist ziemlich einfach, das zu überprüfen. Zum Beispiel überprüfe ich, ob der Tag der aktuellen Zeit im Days
Array ist, wenn die aktuelle Zeit zwischen Start
und End
usw. liegt. Also wird diese Aufgabe bei 17:05:04
, 17:10:01
usw. ausgeführt (Approximation ist 5 Sekunden). So ist es die aktuelle Zeit nahe 17:00 + N*5 seconds
es führt etwas Code aus. Das funktioniert richtig.
Ich kämpfe jetzt mit herauszufinden, mit einer Berechnung für die Zeit, wenn diese Aufgabe in der Zukunft ausgeführt wird. Wenn jetzt zum Beispiel Monday 16:58:30
ist, wird das nächste Mal Monday 17:05
ausgeführt. Wenn es Friday 18:00
ist, wird es unter Saturday 17:05
ausgeführt. Wenn es Monday 18:33
ist, ist der nächste Lauf Monday 18:35
. Die Schwierigkeiten kommen, wenn man bedenkt, dass Anfang etwas wie Start sein: 17:03:00
und so sind Laufzeiten verschoben jetzt 17:08
, 17:13
usw.