Frage

Gibt es eine veröffentlichte Datenstruktur für Daten Erzeugung periodischer Speicherung? Etwas, das handhaben kann:

  1. Die Pumpe müssen alle fünf Tage Recycling.
  2. Zahltag ist jeder zweiter Freitag.
  3. Thanksgiving Day ist der zweite Montag im Oktober (USA: der vierte Donnerstag im November)
  4. .
  5. Valentinstag ist jeder 14. Februar.
  6. Solstice ist (in der Regel) jedes Jahr im Juni 21. und 21. Dezember.
  7. Ostern ist der Sonntag nach dem ersten Vollmond am oder nach dem Tag der Frühlings-Tagundnachtgleiche (okay, das hier ist ein bisschen weit hergeholt).

Ich rechne damit, cron interne Datenstruktur 1 # verarbeiten kann, # 4, # 5 (zwei Regeln), und vielleicht # 2, aber ich habe nicht einen Blick auf sie habe. MS Outlook und andere Kalender scheinen die ersten fünf zu handhaben zu können, aber ich habe nicht diese Quellcode herumliegen.

War es hilfreich?

Lösung

Verwenden Sie eine iCalendar Implementierung Bibliothek, wie diese hier: Rubin , java php , python , .net und java , //ical4j.sourceforge.net/introduction.html und dann für die Berechnung der besonderen Terminen Unterstützung hinzufügen

Andere Tipps

Mit all diesen Veränderungen in der Art und Weisen Sie die Wiederholung angeben, würde ich zurückschrecken aus einer einzigen Datenstruktur Implementierung alle fünf Szenarien gerecht zu werden.

Stattdessen würde ich (und für ein vorangegangenes Projekt) bauen einfache Strukturen, die jede Art der Wiederholung adressieren. Sie könnten sie alle wickeln, so dass es wie eine einzige Datenstruktur fühlt, aber unter der Haube konnten sie tun, was sie wollen. Durch die Implementierung einer Schnittstelle, war ich in der Lage, jede Art von Wiederholung zu behandeln ähnlich so fühlte es sich wie ein one-size-fits-all-Datenstruktur. Ich konnte jede Instanz bitten für alle Tage, die Wiederholung innerhalb eines bestimmten Zeitrahmens, und das war der Trick.

Ich würde auch wollen mehr darüber wissen, wie diese Daten benötigen, bevor sie sich auf eine bestimmte Implementierung verwendet werden.

Wenn Sie hands-on wollen eine Datenstruktur erstellen, würde ich eine Hash-Tabelle empfehlen (wo die Feiertage oder Veranstaltung sind der Schlüssel mit dem neuen Datum Auftreten als Wert), wenn es Multiplizitäten von jedem Auftreten Sie Hash könnte der Wert, der einen Abschnitt in einer verknüpften Liste findet, die dann eine Liste aller Vorkommen hat (dies sowie Insertion Lauf in O (1) machen würde, zu finden).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top