Hallo zusammen,
ich lese mit Java eine Excel-Zelle aus, welche als Datum formatiert ist. Excel übergibt hier ein Integer (bzw. Long) und nicht das Datum als String.
Das Datum 01.01.1900 entspricht dabei dem Integer 1, und dann weiter gezählt ist 02.01.1900 der Integer 2 usw.
Also bekomme ich jetzt von Excel einen int übergeben, z.B. 40544 (für 01.01.2011). Jetzt möchte ich aus dieser Zahl wieder ein Datum errechnen.
Ich hab dazu einen kleinen Test entworfen.
Ich erzeuge da immer eine Instanz des GregorianCalendar mit dem Datum 01.01.1900 und zähle dann eine Zahl dazu.
Doch bei der Ausgabe bekomme ich komische Daten wie 30.02.1900 oder es werden existierende daten wie 29.01.1900 garnicht ausgegeben. Das Ganze zieht sich die Jahre bis heute durch.
Hier mein Test Code:
Wenn ich jetzt vergleiche, was mir Excel bei einer Zahl für ein Datum gibt und was mit der GregorianCalendar gibb, dann stimmen diese oft nicht überein.
Kann mir jemand sagen warum das so ist.
Mache ich einen groben fehler.
Vielen Dank schonmal fürs Lesen
Grüße
Felix
PS: Ich hab auch herausgefunden, dass Excel im Jahr 1900 das Datum falsch ausgibt, denn dieses Jar ist gar kein Schaltjahr. Folglich gibt es den 29.02.1900 in Wirklichkeit garnicht. Darum hab ich mich aber noch nicht gekümmert, weil ich erstmal das oben beschriebene Problem in Angriff nehmen wollte.
ich lese mit Java eine Excel-Zelle aus, welche als Datum formatiert ist. Excel übergibt hier ein Integer (bzw. Long) und nicht das Datum als String.
Das Datum 01.01.1900 entspricht dabei dem Integer 1, und dann weiter gezählt ist 02.01.1900 der Integer 2 usw.
Also bekomme ich jetzt von Excel einen int übergeben, z.B. 40544 (für 01.01.2011). Jetzt möchte ich aus dieser Zahl wieder ein Datum errechnen.
Ich hab dazu einen kleinen Test entworfen.
Ich erzeuge da immer eine Instanz des GregorianCalendar mit dem Datum 01.01.1900 und zähle dann eine Zahl dazu.
Doch bei der Ausgabe bekomme ich komische Daten wie 30.02.1900 oder es werden existierende daten wie 29.01.1900 garnicht ausgegeben. Das Ganze zieht sich die Jahre bis heute durch.
Hier mein Test Code:
Java:
import java.util.Calendar;
import java.util.GregorianCalendar;
public class Main {
public static void main(String[] args) {
getYear();
}
private static void getYear(){
for (int x = 1; x < 1001; x++){
Calendar calendar = new GregorianCalendar(1900, 1, 1);
calendar.add(Calendar.DAY_OF_MONTH, xy - 1);
System.out.println(x + ":" + calendar.get(Calendar.DATE) + "." + calendar.get(Calendar.MONTH) + "." + calendar.get(Calendar.YEAR));
}
}
}
Wenn ich jetzt vergleiche, was mir Excel bei einer Zahl für ein Datum gibt und was mit der GregorianCalendar gibb, dann stimmen diese oft nicht überein.
Kann mir jemand sagen warum das so ist.
Mache ich einen groben fehler.
Vielen Dank schonmal fürs Lesen
Grüße
Felix
PS: Ich hab auch herausgefunden, dass Excel im Jahr 1900 das Datum falsch ausgibt, denn dieses Jar ist gar kein Schaltjahr. Folglich gibt es den 29.02.1900 in Wirklichkeit garnicht. Darum hab ich mich aber noch nicht gekümmert, weil ich erstmal das oben beschriebene Problem in Angriff nehmen wollte.