Differenz in Tagen von 2 Calendarobjekten

Status
Nicht offen für weitere Antworten.

ich_wills_wissen

Bekanntes Mitglied
Hallo zusammen,

wie kann ich am einfachsten die Differenz in Tagen von 2 Calendarobjekten
herausbekommen ?

Mit
Code:
int jahresdifferenz = endZeitPunkt.get(Calendar.YEAR) - startZeitPunkt.get(Calendar.YEAR);
int monatsdifferenz = endZeitPunkt.get(Calendar.MONTH) - startZeitPunkt.get(Calendar.MONTH);
int tagesdifferenz = endZeitPunkt.get(Calendar.DAY_OF_MONTH) - startZeitPunkt.get(Calendar.DAY_OF_MONTH);

klappt das nicht wirklich, weil die Monate ja alle unterschiedlich lang sind.
Und mit DAY_OF_YEAR klappt das nur solange wie die beiden Calendarobjekte sich im selben Jahr
befinden...

Hat jemand eine gute Idee ?


Gruß,

ich_wills_wissen [/code]
 

oschli

Mitglied
Rechne doch das Datum in Millisekunden um.

Beispiel im Forum


Code:
import java.util.Calendar;
import java.util.GregorianCalendar;

public class ZeitDiff {
 
    
   public static void main(String[] args) {
      //                            
	   GregorianCalendar start = new GregorianCalendar(2006, 0, 1 );
	   GregorianCalendar ende  = new GregorianCalendar(2006, 0, 25);

      long diffMillis = ende.getTimeInMillis() - start.getTimeInMillis();
      double diffDay = diffMillis / 1000D / 60D / 60D / 24D;
     
      
      System.out.println("START: " + start.get(Calendar.DAY_OF_MONTH) + "." +
                                     start.get(Calendar.MONTH) + "." +
                                     start.get(Calendar.YEAR));                                
      
      System.out.println("ENDE : " + ende.get(Calendar.DAY_OF_MONTH) + "." +
                                     ende.get(Calendar.MONTH) + "." +
                                     ende.get(Calendar.YEAR));
      
      System.out.println("DIFF : " + diffDay);
   }
}
 

ich_wills_wissen

Bekanntes Mitglied
hhmmm.. das bringt mir leider nicht viel, denn :

Die Differenz aus
Code:

ende.getTimeInMillis() - start.getTimeInMillis()
zu erzeugen ist prinzipiell in Ordnung.

Die Differenz aber mittels "setTimeInMillis" wieder zu setzen in der Hoffnung fertig zu sein wird nicht funktionieren, da die 'millis' den milliseconds after January 1, 1970, 0:00:00 entsprechen. D.h. alle Differenzen die innerhalb eines Jahres liegen, werden zum Ergbnis "1970" haben...

Und was ist mit denen, die außerhalb eines Jahres liegen ?

Es geht um folgendes:

Ich habe eine Monatsübersicht (List-Objekte, welche durch ein GridLayout in Tabellenform gebracht sind. Ein Listobjekt = 1 Tag).
In diese Monatsübersicht sollen Termine eingetragen werden. Z.B.
04.04.2006 13:15 und der Termin geht bis sagen wir mal 05.05.2006 12:00.

Ich will jetzt in die Liste, welche den 04.04 darstellt einen Eintrag machen (Uhrzeit) und bei allen Tagen,
die zwischen dem 04.04 und Ende April liegen einen Eintrag '24 Stunden verplant' machen.
Wenn ich mir die Monatsübersicht von Mai anzeigen lasse, sollen die ersten 4 Tage entsprechend gleich beschriftet sein,
d.h. die Tage bis einschließlich 04.05 sollen '24 Stunden verplant' als Text bekommen und der 05.05.2006 soll
dann die Endurzeit bekommen (so in etwa: 'Termin endet um 12:00').

Um das ganze in die Monatsübersicht einzutragen bekomme ich 2 Calendar-Objekte (Starttermin und Endtermin).
Jede Liste hat in der obersten Zeile als Eintrag die Nummer des Tages, also z.B. '01' für den ersten tag des Monats.
Die Information welcher Monat und welches Jahr in der Liste gerade angezeigt wird hole ich mir aus der Überschrift.
Das Anfangsdatum kann ich ohne Probleme eintragen, aber an dem Rest tue ich mich gerade irrsinnig schwer.. :( :bahnhof:

Hat nicht zufällig jemand mal ein gleiches Problem gehabt ?
Wie habt ihr das gelöst oder wie würdet ihr es lösen ?


Für jede Hilfe dankbar,

ich_wills_wissen


Nachtrag: Oh, während ich meine Antwort geschrieben habe hast Du noch Code in Dein Posting hinzugefügt..
das probier ich doch gleich mal aus.. danke !
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben