Bibliothek für Zeitintervalle?

Mir ist in meinem Job aufgefallen, dass wir uns häufiger mit Serien von Zeitintervallen herumschlagen, und darüber hinaus das Handling auch uneinheitlich ist.

Wer sich auch nur oberflächlich mit dem Thema beschäftigt hat, wird bestätigen, dass es schwieriger ist, als es klingt, insbesondere wenn man eine bestehende Serie von Intervallen hat, und nun Updates drübergebügelt werden sollen. Also z.B. hat man ein Intervall vom 1.10 bis 12.10, und dann kommt ein neues vom 3.10. bis 5.10. dazu, was das alte in der Mitte überschreibt, so dass zwei alte am Anfang und Ende übrig bleiben.

Gibt es da schon was Fertiges, was einigermaßen stabil und flexibel ist?

Mein Google-Foo hat mir nicht weitergeholfen, weil in 95% der Fälle etwas mit Analyse von Zeitreihen kommt.

Ist juste selber schreiben denn keine Option?

Eine out-of-the-box-Lösung kenne ich nicht. Es ist auch nicht ganz klar, was die Anfangs- und Endwerte sein sollen. Long aka Epoch Milliseconds, vs. LocalDateTime…? Am besten wäre es natürlich, das generic zu machen, aber … inwieweit ist es dann noch spezifisch für „Zeit“? D.h.: Was haben Zeitintervalle, was andere „Intervalle auf partiell geordneten Mengen“ nicht haben? In diesem Sinne wird viel von dem, was man da brauchen könnte, schon von Guava Ranges abgedeckt. Aber schon bei dem verlinkten „Intersection“ sieht man eine Einschränkung: Das gewünschte "A-D".intersect("B-C") = { "A-B", "C-D" } wäre damit nicht direkt möglich (wenn auch natürlich leicht dazuzuimplementieren).

Die Frage nach dem „selber schreiben“ klingt erstmal naiv, aber … da du auch jemand bist, der sich darüber im Klaren ist, dass…

  • „die gerade benötigte Funktionalität mal kurz zusammendengeln“ ca. 10 Minuten dauert und
  • Eine Library (auf GitHub und Maven Central) zu erstellen, die „sowas“ anbietet ein paar Wochen Arbeit und ggf. ein Jahrzehnt gelegentlicher „Wartungsarbeiten“ bedeutet

noch die Bemerkung: Ich hatte mal irgendwann TimeSeries - Libraries für Zeitserien erstellt (inzwischen privat), und so eine Lib könnte ein Teil bzw. ein Baustein davon sein. Falls du vorhast, weiter zu recherchieren, ob es nicht doch schon sowas gibt, und du zu dem Schluss kommst, dass man ~„das mal selbst angehen könnte“: Ping an mich.

Hallo,

jetzt bin ich neugierig geworden…

Also z.B. hat man ein Intervall vom 1.10 bis 12.10, und dann kommt ein neues vom 3.10. bis 5.10. dazu, was das alte in der Mitte überschreibt, so dass zwei alte am Anfang und Ende übrig bleiben.

Verstehe ich das richtig, dass bei Vorgabe eines Zeitintervalls Start:01.10. Ende:12.10 Dass bei Ergänzung um ein Intervall: Start:3.10 Ende:5.10 daraus folgert, dass dann

Die folgenden Intervalle entstehen:

  1. Start: 01.10 Ende 03.10
  2. Start: 04.10 Ende 05.10
  3. Start: 06.10 Ende 12.10 …

Jetzt mal auf Basis eines Datums…(man könnte das bis auf …Sekunden… runter brechen…)…

Leider ist das Projekt, dass Du verlinkt hattest nicht mehr Online… (hattest Du ja geschrieben…)…

BTW: Gibt es dafür mal eine praktische Anwendung?

Gruß
Karl Heinz

Bei mir ginge es z.B. um Kapazitäten von Pipelines, die z.B. durch Wartungsarbeiten, Gas-Qualität oder Eigenbedarf schwanken können.

Keine Angst, ich arbeite nicht für Nordstream :smiley: