Kalenderberechnungs-API

Ich suche nach einer gut unterstützten (dh in aktiver Entwicklung oder so ausgereift, dass sie eine natürliche und unumstrittene Wahl sein kann) Kalenderbibliothek. Ich brauche es in erster Linie, um mir mitzuteilen, wann die nächsten Daten den von mir angegebenen Kriterien entsprechen. Die repräsentativen Kriterien, die ich angeben muss, sind:

Alle 1-12 Monate am

  1. letzten Samstag
  2. letzter Tag
  3. erster Samstag
  4. am # Tag

(Wenn die Bibliothek damit umgehen kann, kann sie natürlich viel mehr bewältigen, was ich zu einem späteren Zeitpunkt nützlich finden könnte.)

Ich werde diese Bibliothek unter OS X verwenden, daher ist die bevorzugte Sprache der Bibliothek (in der Reihenfolge der Erwünschtheit) (a) Swift, (b) Objective-C, (c) C und (d) C++.

Die Cocoa-Klassen von Apple bieten zwei mögliche Lösungen:

  1. Die EventKit-Klassen. Die bereitgestellte API kann alles verarbeiten, was ich oben erwähnt habe. Das Problem dabei ist, dass ich direkt mit dem Kalender des Benutzers interagieren muss, und das möchte ich vermeiden.

  2. Die Klassen NSCalendar und NSDateComponents. Diese können das meiste von dem verarbeiten, was ich oben erwähnt habe, aber ich sehe keine Möglichkeit, zum Beispiel "last" anzugeben.

Hat jemand irgendwelche Vorschläge?

Antworten (1)

Ein Vorschlag für Sie wäre die wxDateTime - Klasse der wxWidgets -Bibliothek .

wxWidgets ist in C++ geschrieben, sowohl ausgereift (seit 1992) als auch aktiv entwickelt, gut dokumentiert und plattformübergreifend. Es ist kostenlos, sowohl Gratis als auch Open Source, kann aber für kommerzielle Projekte verwendet werden.

Nehmen wir Ihre Beispiele der Reihe nach:

  1. Jeden Monat am letzten Samstag wxDateTime::SetToLastWeekDay
  2. Jeden Monat am letzten Tag wxDateTime::SetToLastMonthDay
  3. Jeden Monat am ersten Tag einfach auf den Ersten des Monats setzen
  4. Jeden Monat am Tag # einfach auf Tag # im Monat einstellen
  5. Jeden Monat am ersten Samstag wxDateTime::SetToWeekDay
  6. Alle # Monate am ersten Samstag wxDateTime::SetToWeekDay in einer Schleife
  7. Alle # Monate am Tag # einfach in einer Schleife auf den Tag # im Monat setzen
  8. Alle # Monate am letzten Samstag wxDateTime::SetToLastWeekDay in einer Schleife

Sie müssen nicht die gesamte wxWidgets-Bibliothek verwenden (wodurch Sie eine vollständige GUI-Entwicklungsbibliothek erhalten), Sie können nur Teile davon verwenden, indem Sie sie nicht als monolithische Bibliothek erstellen.

Zusätzliche Mitglieder des Kalendertyps in wxDateTime:

  • Analysieren und Formatieren von Datum/Uhrzeit
  • Datums-/Uhrzeitvergleiche und -berechnungen
  • Zeitzonenberechnungen
  • Berechnungen des gregorianischen/julianischen Kalenders
  • Enthält auch die meisten Feiertage für IsWorkDay in ausgewählten Ländern.
  • Keine Epochenbegrenzung – Sie können Berechnungen mit Daten vor 1970 durchführen. Die Bandbreite der unterstützten Daten reicht von etwa 4714 v. Chr. bis etwa 480 Millionen Jahre in der Zukunft.