cdbl in Java?

bernd00

Mitglied
Hi,

in VBA gibt es die Funktion CDbl, die mir bei übergabe eines Datums eine Zahl zurück gibt.

Code:
CDbl("01.12.2010") = 40513
CDbl("02.12.2010") = 40514
CDbl("03.12.2010") = 40515
CDbl("04.12.2010") = 40516
CDbl("05.12.2010") = 40517
CDbl("06.12.2010") = 40518

Das ist dann die Anzahl der Tage seit 01.01.1900.
Gibt es so etwas auch in Java? Oder kann ich das nur durch berechnen einer Tagesdifferenz die Anzahl ermitteln?

Warum ich Frage, ich habe die Berechnung der Tage gemacht, bekomme aber immer 2 weniger als in VBA. Momentan addiere ich die 2 einfach dazu, bin mir aber nicht sicher ob das immer so bleiben wird?

Code:
SimpleDateFormat format = new SimpleDateFormat("dd.MM.yyyy");
Date datanfang = null;
Date datum = null;
try {
    datanfang = format.parse("01.01.1900");
    datum = format.parse("06.12.2010");
} catch (ParseException e) {
     e.printStackTrace();
}
int diff = (int) ((datum.getTime() - datanfang.getTime())/(1000*60*60*24) + 2);

Gibts da noch eine bessere Variante? Jemand einen Tipp für mich?

MfG
 
Hallo Bernd,

du kannst auch den Kalender benutzen:
Code:
		Calendar cal_1 = Calendar.getInstance(); //new GregorianCalendar();
		Calendar cal_2 = Calendar.getInstance(); //new GregorianCalendar();
		cal_1.set( 1900, Calendar.JANUARY, 1, 0, 0, 0 );                      // erster Zeitpunkt
		cal_2.set( 2010, Calendar.DECEMBER, 6, 0, 0, 0 );                      // zweiter Zeitpunkt
		long time = cal_2.getTime().getTime() - cal_1.getTime().getTime();  // Differenz in ms
		long days = Math.round( (double)time / (24. * 60.*60.*1000.) );     // Differenz in Tagen
		System.out.println( "Zeit-Differenz in Tagen: " + days );
hier gefunden: Java Date und Calendar

Ergebnis: Zeit-Differenz in Tagen: 40516
Das Ergebnis liefert auch ein Online-Rechner (Java-Script)
Excel sagt 40517
 
Danke für den Tipp,

denke das geht dann bestimmt nicht ohne Berechnung.
habe das mal gegeneinander getestet. Das was VBA ausspuckt, und aus der Berechnung. Getestet für die letzten 3 Jahre pro Tag. Das muss erstmal so reichen ;)
 
Zurück