Kalender arithmetik

PollerJava

Top Contributor
Hallo,

ich hab ein sehr spezielles Problem, ich bin zwar schon länger in der SW Entwicklung aber aktuell weiß ich nicht weiter :-(
In meiner Applikation kann man einen Dienstplan in einem Kalender einstellen, z.B. fängt ein Mittarbeiter am 01. Juli 2015 bei einer Firma an und hat dann einen Dienstplan, welcher sich z.B. nach 3 Wochen wieder wiederholt (also z.B. erste Woche Montag und Freitag dienst, zweite Woche nur Mittwoch, dritte Woche Montag und Freitag und in der vierten Woche wieder Montag und Freitag usw.). Die Arbeitszeiten wiederholen sich quasi in einem 3 wochen zyklus.

Soweit so gut, ich will natürlich nicht diesen Zyklus für jahre im voraus berechnen sondern herleiten und nur die Tage der 3 Wochen abspeichern und das Interval - in diesem Fall ein 3 Wochen Interval.

Ich verwende in meiner Applikation JodaTime, ich weiß aber nicht, wie ich das umsetzen kann.
Vor allem die Jahreswechsel machen mir da bedenken, da ich wegen den Jahreswechsel nicht mit den Kalenderwochen rechnen kann.

Ich bin dankbar für jeden Hinweis in diese Richtung wie man das lösen kann.!
Danke!
Poller
 

DrZoidberg

Top Contributor
Eine Möglichkeit wäre getMillis(). Den Wert teilst du dann durch 604800 um herauszufinden wie viele Wochen seit dem 1.1.1970 vergangen sind.
Oder du rechnest das Ganze selbst aus, d.h. ohne Joda Time oder eine andere Date API zu verwenden. Ist relativ einfach, wenn man zuerst den Februar ans Ende des Jahres verschiebt, um die Schaltjahre leichter berechen zu können.
 

Tom299

Bekanntes Mitglied
Warum speicherst du nicht einfach in deinem Dienstplanobjekt (falls es das oder ähnliches gibt) deine Dienstplanwoche (1,2 oder 3)? Dann brauchst du für die nächste Dienstplanwoche immer nur zu schauen, was die letzte Zahl war und entsprechend wird das nächste angelegt und eine Woche drauf addiert. Und anhand der Dienstplanwoche weißt du ja, welche Tage belegt sind.
 

stg

Top Contributor
Ich verwende in meiner Applikation JodaTime, ich weiß aber nicht, wie ich das umsetzen kann.
Vor allem die Jahreswechsel machen mir da bedenken, da ich wegen den Jahreswechsel nicht mit den Kalenderwochen rechnen kann.

Wenn du das einfach mal ausprobiert hättest, dann wäre dir aufgefallen, dass das überhaupt kein Problem ist. Selbst die alte Java Date/Calendar-API kann das ja schon.

Mit JODA:
Java:
DateTime xmas = new DateTime(2012, 12, 25, 0, 0, 0, 0);
DateTime newYearsDay = xmas.plusWeeks(1);
DateTimeFormatter fmt = DateTimeFormat.forPattern("MM/dd/yyyy HH:mm:ss z");
logger.info(xmas.toString(fmt));
logger.info(newYearsDay.toString(fmt));
Ausgabe:
Code:
12/25/2012 00:00:00 CST
01/01/2013 00:00:00 CST

Quelle und weitere Beispiele mit anderen APIs siehe hier: http://www.leveluplunch.com/java/examples/add-weeks-to-date/
 

Ähnliche Java Themen

Neue Themen


Oben