Hi,
die Cronsyntax ist ja ein alt bewährtes Mittel um Zeitpunkte für einmalige oder wiederkehrende Ereignisse zu definieren.
Ich möchte ausgehend von einen Datum und einen String mit einer Crontab-Syntax wie z.B.
den nächsten Zeitpunkt, welcher die Bedingung des cronStr entsprechend der üblichen Regeln (cron wiki) erfüllt, ermitteln.
Beispiel:
Es liegt ein Datum Sa, 22.7.2017 14:00 vor. Die Methode soll nun den nächsten Zeitpunkt ermitteln, der den Cron-Ausdruck "20,30 1 * * 1-5" erfüllt.
Erwartetes Ergebnis: Mo, 24.07.2017 1:20
Nun gibt es für PHP dafür schon zahlreiche Klassen. Diese sind mir jedoch zu mächtig und realisieren alle weit mehr als ich brauche.
PHP-Frameworks kommen für meine Zielsysteme auch nicht in Frage.
Meine erste Idee für eine Realisierung ist eine Schrittweise Erhöhung einzelner Datumsanteile (Monat, Tag..) mit einem Abgleich der Cronausdruckes bis es passt.
Ich fürchte nur diese Variante wird sehr zeitaufwendig. Mir fehlt da noch sozusagen die zündende Idee.
Gelöst ist bereits das Problem eine Zeit mit dem Cron-Ausdruck abzugleichen und damit auch das Parsen des Cronstrings.
Konkret liefert eine Methode isCron() eines abgeleiteten DateTime-Objektes für ein String wie oben true oder false.
Hat das jemand schon mit nativen PHP gelöst oder hat eine Idee dazu?
LG jspit
die Cronsyntax ist ja ein alt bewährtes Mittel um Zeitpunkte für einmalige oder wiederkehrende Ereignisse zu definieren.
Ich möchte ausgehend von einen Datum und einen String mit einer Crontab-Syntax wie z.B.
PHP-Code:
$cronStr = "20,30 1 * * 1-5"; //mo-fr 01:20 und 1:30
Beispiel:
Es liegt ein Datum Sa, 22.7.2017 14:00 vor. Die Methode soll nun den nächsten Zeitpunkt ermitteln, der den Cron-Ausdruck "20,30 1 * * 1-5" erfüllt.
Erwartetes Ergebnis: Mo, 24.07.2017 1:20
Nun gibt es für PHP dafür schon zahlreiche Klassen. Diese sind mir jedoch zu mächtig und realisieren alle weit mehr als ich brauche.
PHP-Frameworks kommen für meine Zielsysteme auch nicht in Frage.
Meine erste Idee für eine Realisierung ist eine Schrittweise Erhöhung einzelner Datumsanteile (Monat, Tag..) mit einem Abgleich der Cronausdruckes bis es passt.
Ich fürchte nur diese Variante wird sehr zeitaufwendig. Mir fehlt da noch sozusagen die zündende Idee.
Gelöst ist bereits das Problem eine Zeit mit dem Cron-Ausdruck abzugleichen und damit auch das Parsen des Cronstrings.
Konkret liefert eine Methode isCron() eines abgeleiteten DateTime-Objektes für ein String wie oben true oder false.
Hat das jemand schon mit nativen PHP gelöst oder hat eine Idee dazu?
LG jspit
Kommentar