Rechenfehler mit DateTime Objecten

kleinfritzchen

Aktives Mitglied
Hallo,
ich verwende in einem Programm von mir Jode Time.
Im Programm trat ein fehler auf den ich in einer Datums-Differenz-Berechnung ermittelt hab.
hier ein kurzes Testprogramm:
Java:
package test;

import org.joda.time.DateTime;

public class TesterKalenderFehler {
	DateTime dt,d1,d2 ;
	
	
	public void test(){
		dt =new DateTime(2012,1,1,0,0);
		for (int i=80;i<100;i++){
			d1=dt.plusDays(i);
			d2=dt.plusDays(-5);
			System.out.println(((d1.getMillis()-d2.getMillis())/86400000L));
		}
	
		
	}
	public static void main(String[] args) {
		TesterKalenderFehler t=new TesterKalenderFehler();
		t.test();
	}
}
Bei der Berrechnung wird die differenz in Tagen zwischen zwei DateTime Objekten ermittelt.
Wie jkann ich diesen Rechenfehler beseitigen?
 

mvitz

Top Contributor
Sorry für den Doppelpost, aber habs gefunden ;-)

Problem ist an der Stelle wohl, dass deine Schleife über eine Zeitumstellung drüber läuft und dein "naiver" Ansatz mit dem dividieren durch die Anzahl der Sekunden für einen Tag dann nicht funktioniert.

Eine kurze Suche bei Google (da ich JodaTime noch nie benutzt habe), die du auch eben selber hättest machen können, hat die Klasse org.joda.time.Days zu Tage gebracht.

Folgendes sollte funktionieren:
Java:
import org.joda.time.DateTime;
import org.joda.time.Days;

public class JodaTimeTest {

    public static void main(String[] args) {
        final DateTime dt = new DateTime(2012, 1, 1, 0, 0); 
        for (int i = 80; i < 100; i++) {
            final DateTime d1 = dt.plusDays(i);
            final DateTime d2 = dt.plusDays(-5);
            System.out.println(Days.daysBetween(d2, d1).getDays());
        }
    }

}
 

kleinfritzchen

Aktives Mitglied
Danke,
ich bin nicht so gut in englisch (war ich noch nie).
ich hab nach einer funktion gesucht die mit das Rechnen mit DateTime Objekten ermöglicht aber ich bin nie so ganz durchgestiegen wie die ganzen Klassen von Date Time funktionieren.
Danke für den Hinweis!!!
Mit dieser Methode sollte ich es hinbekommen.

MfG Fritz
 

Ähnliche Java Themen

Neue Themen


Oben