Calendar: Differenz in Tagen

R

rikola

Foren Gott
Hallo,

ich suche nach einer Moeglichkeit (in Java) Tage (also ein Datum aus dem Kalender) zu handhaben und v.a. Differenzen zu berechnen. Dabei ist die Uhrzeit egal, d.h., es kann angenommen werden, dass es immer 0:00 ist. Mir scheint die Klasse 'Calendar' der richtige Weg zu sein. Damit kann man schonmal Tage mittels 'add' hinzuzaehlen.

Wie berechnet man nun die Differenz zwischen zwei Daten?
Eine Loesung waere es ja, vom kleineren Datum zum Hoeheren in 1er Schritten hochzuzaehlen, bis beide gleich sind. Es sollen keine grossen Differenzen berechnet werden, so dass diese unelegante Loesung zumindest zeitlich keine Einschraenkung waere. Gibt es eine Standardklasse, die dies bereits kann?
 
http://www.javaworld.com/jw-12-2000/jw-1229-dates.html sollte helfen
.
Tut es nicht. Zumindest habe ich keinen Hinweis gefunden, wie man die Differenz (in Tagen) zwischen zwei Daten herausbekommt. Die Differenz in Millisekunden geht - ok. Doch Millisekunden lassen sich nicht in Kalendertage umwandeln, da die Jahreslaenge durch die Schalttage variiert.
Code:
[b]EDIT[/b]  (autom. Beitragszusammenführung) :
.[/color]
Tipp: Subtraktion ist die Addition einer negativen Zahl. Kanns mangels JVM leider gerade nicht testen[/QUOTE]

Das hilft mir leider nicht. Falls Du mir Code schicken koenntest, waere das toll.
 
Hast du dir die GregorianCalendar Klasse aus dem Artikel angeschaut? Die unterstützt zumindest das Addieren von *Tagen* und dafür sind auch ein paar Beispiele drin mit Code, du müsstest halt einfach mal -2 Tage oder so addieren. Mein eeePC Gentoo hat bisher keine JVM und ich bin auch nicht so scharf drauf, mit 4 GB SSD muss man irgendwie sparen ;-)
 
du müsstest halt einfach mal -2 Tage oder so addieren.
Das ist mir schon alles klar. Nur sehe ich nicht, wie ich damit die Differenz in Tagen zwischen zwei Daten herausbekomme auf eine elegantere Weise als die von mir vorgeschlagenen Zaehlschleife. Vielleicht laeuft es dann darauf hinaus.
 
Au scheisse bin ich blöd. Ich hab irgendwo mittendrin vergessen, was du eigentlich wolltest, tut mir leid. Aber kannst du nicht einfach die beiden Daten nehmen und dann als Sekunden seit 1.1.1970, dann subtrahieren, dann das Ergebnis in Tage umwandeln? Schaltjahre und so sollten ja bereits in der Zahl berücksichtigt sein.
.
.
.
EDIT (autom. Beitragszusammenführung) :
.

Übrigens, in Smalltalk wäre das ein einfaches ( date1 - date2 ) days ;-D
 
Zuletzt bearbeitet:
@Ricola

Ich verstehe dein Problem nicht ganz, Date / Calendar usw. sind doch nur Repräsentationen von Zeit in Millisekunden, was hält dich davon ab, beides zu subtrahieren und dann daraus die Zeit zu berechnen?

@saeckereier

Na da sind wir ja froh, das Java solchen Unsinn wie Operator Overloading bewusst nicht anbietet.........:devil: (auch nicht in Java 7, es gibt noch nicht mal einen JSR dafür)
 
Aber kannst du nicht einfach die beiden Daten nehmen und dann als Sekunden seit 1.1.1970, dann subtrahieren, dann das Ergebnis in Tage umwandeln? Schaltjahre und so sollten ja bereits in der Zahl berücksichtigt sein.
Stimmt - sie sind mit drin. Daran habe ich nicht gedacht. Entschuldige bitte den Aufruhr, da stand ich sehr auf dem Schlauch!
 
@saeckereier

Na da sind wir ja froh, das Java solchen Unsinn wie Operator Overloading bewusst nicht anbietet.........:devil: (auch nicht in Java 7, es gibt noch nicht mal einen JSR dafür)

Hat zwar nix mehr mit dem Thread zu tun aber zum Thema Operator Overloading, sowas kennt Smalltalk auch nicht, weil ein "-" da kein Operator sondern eine Funktion (eigentlich Nachricht an ein Objekt) ist wie alles andere. Selbiges gilt zum Beispiel auch für Konstruktoren. Ich hab nie verstanden warum ich den Konstruktor zum Beispiel nicht vererben darf.
 

Ähnliche Themen

CSV Datei mit sed manipulieren/optimieren/ergänzen

Zurück
Oben