GregorianCalendar Methode add liefert komische Werte

Qwertzuiop

Mitglied
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:
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.
 

pl4gu33

Top Contributor
Der Kalender rechnet mit 0 als Januar und 11 als Dezember ... wenn du z.b. beim Start Calendar calendar = new GregorianCalendar(1900, 0, 1);angibst siehst du, dass es dort den 29. gibt und 30.02.1900 eigentl. März is :D
 
Zuletzt bearbeitet:

Pentalon

Bekanntes Mitglied
Wofür verwendest Du die Schleife ?

Ich hab Dein Programm ein wenig geändert:

Java:
import java.util.Calendar;
import java.util.GregorianCalendar;
 
public class Test5 {
    public static void main(String[] args) {
        getYear();
    }
    private static void getYear(){
        
    	int xy = 40544;
    	
        //for (int x = 1; x < 1001; x++){
            Calendar calendar = new GregorianCalendar(1900, 0, 1);
            calendar.add(Calendar.DAY_OF_MONTH, xy-1);
            System.out.println("" + calendar.get(Calendar.DATE) + "." + calendar.get(Calendar.MONTH) + "." + calendar.get(Calendar.YEAR));
        //}
    }
}

und bekomme folgende Ausgabe:
[EDIT]2.0.2011[/EDIT]

Das Format ist Tag Monat Jahr, wobei das Monat bei 0 losgeht.
Die Anzeige wäre dann der 2.Jänner 2012.

Pentalon
 

Qwertzuiop

Mitglied
Hallo pl4gu33, Hallo Pentalon,

danke für eure Ratschläge.:) Jerder weiß, dass der Informatiker bei 0 anfängt zu zählen, aber dass dies auch bei einem Kalender und dan nur der Monat ist, das hätte ich nicht gedacht.

Immer blöd wenn man die ganze Zeit auf dem schlauch steht und nichts funktioniert und dann ist die Lösung so einfach.

Merci auch an dich, Pentalon, dass du mein kleines Testprogramm abgeändert hast, den genau das ist der code wie er dann im Programm ausgeführt werden soll. Bis auf das syso halt, was durch ein return ersetzt wird.

Grüße und Servus

Felix
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
kodela GregorianCalendar.getTimeInMillis() Allgemeine Java-Themen 19
B SimpleDateFormat oder doch lieber GregorianCalendar Allgemeine Java-Themen 3
kodela Eigenartige Datumsberechnung über GregorianCalendar Allgemeine Java-Themen 15
E GregorianCalendar Wochentag Allgemeine Java-Themen 3
P Fehler im GregorianCalendar Allgemeine Java-Themen 8
T Liste mit GregorianCalendar-Objekten in List einlesen, mit Collection sortieren und ausgeben Allgemeine Java-Themen 3
M Problem mit dem GregorianCalendar Allgemeine Java-Themen 2
J GregorianCalendar wil nich so recht as ick wol will Allgemeine Java-Themen 6
T GregorianCalendar - kein Februar Allgemeine Java-Themen 6
L Probleme mit GregorianCalendar Allgemeine Java-Themen 4
C Calendar bzw. GregorianCalendar Klasse Allgemeine Java-Themen 12
M Seltsamer Fehler bei GregorianCalendar Allgemeine Java-Themen 2
T KW=1 Jahr=2008 Monat=Dezember => GregorianCalendar Allgemeine Java-Themen 8
B GregorianCalendar UNIX Allgemeine Java-Themen 6
ARadauer GregorianCalendar Allgemeine Java-Themen 8
A Verständnisproblem mit GregorianCalendar Allgemeine Java-Themen 10
A Fehler bei Rechnung mit GregorianCalendar Allgemeine Java-Themen 6
D GregorianCalendar std zurück Allgemeine Java-Themen 7
F GregorianCalendar wirft keine Fehler bei z.b. Monat 17 Allgemeine Java-Themen 3
N GregorianCalendar Allgemeine Java-Themen 2
L String ==> Date ==> GregorianCalendar Allgemeine Java-Themen 3
F Zeit errechnen mit GregorianCalendar Allgemeine Java-Themen 8
F Datum in GregorianCalendar Allgemeine Java-Themen 3
N Unterschied Calendar und GregorianCalendar Allgemeine Java-Themen 9
S GregorianCalendar.getInstance() Allgemeine Java-Themen 7
W Hilfe bei Methode Allgemeine Java-Themen 14
Ü Methoden Arrays vergleichen - Methode Allgemeine Java-Themen 1
Simon16 compareTo Methode überschreiben Allgemeine Java-Themen 4
TheSkyRider Methode über DataInputStream "auslösen" Allgemeine Java-Themen 6
M CrudRepository save Methode mocken Allgemeine Java-Themen 6
thor_norsk toString() - Methode Allgemeine Java-Themen 6
A Clean Code: Variable vs. Methode Allgemeine Java-Themen 8
Encera Zweite Main-Methode zuschalten Allgemeine Java-Themen 18
M Optimierung einer Methode (byte-Geraffel) Allgemeine Java-Themen 2
I Hibernate Envers - Aufruf der Methode zum Speichern selbst ausführen oder managen? Allgemeine Java-Themen 0
N rekursion mehrfach eine Methode Öffnen Allgemeine Java-Themen 4
berserkerdq2 Wenn ich eine Methode nur jede 50ms ausführen will, wie mach ich das? Allgemeine Java-Themen 4
berserkerdq2 run-methode eines Threads so programmieren, dass 30x die Sekunde etwas ausgeführt wird. Allgemeine Java-Themen 44
N Schnellste Methode, ein Array durchzugehen? Allgemeine Java-Themen 9
E Methoden abstract static Methode Allgemeine Java-Themen 8
E Eine Methode einer extendeten Klasse deakitivieren Allgemeine Java-Themen 12
F Getter Methode aufrufen funktioniert nicht Allgemeine Java-Themen 1
B In Java Methode mit generic input und output basteln? Allgemeine Java-Themen 4
goldmensch Datentypen Welche Methode hat die bessere Performance? Allgemeine Java-Themen 12
R Lambda Expression in einer Methode execute() aufrufen (execute() ist eine Methode aus dem funktionalen Interface Command) Allgemeine Java-Themen 5
T C++ Methode Übersetzung in Java Allgemeine Java-Themen 3
L Erste Schritte TDD testen einer Methode mit injezierten Services? Allgemeine Java-Themen 12
R @author vor Methode (eclipse) Allgemeine Java-Themen 1
J RotSchwarzBaum: Löschen mittels insert-Methode Allgemeine Java-Themen 20
Y Java Bruttoberechnen + runden Methode Allgemeine Java-Themen 1
R Warum ist die Methode unendlich oft rekursiv? Allgemeine Java-Themen 5
R Methoden Was fehlt mir bzw. muss ich bei der Methode countHarshabNumbers ändern damit ich die Harshad Zahlen im Intervall [51, 79] zählen kann? Allgemeine Java-Themen 19
D ArrayListe delete Methode klappt nicht Allgemeine Java-Themen 12
Drachenbauer Wie finde ich den Aufrufer zu einer Methode, die sich nicht in meinem Projekt befindet? Allgemeine Java-Themen 2
A Ist ein enum hier richtig? Enum toString() Methode. Allgemeine Java-Themen 1
Scream_ilias brute force methode verbessern? Allgemeine Java-Themen 6
Scream_ilias passwort meines pc per brute force methode knacken Allgemeine Java-Themen 4
S static methode im Interface Allgemeine Java-Themen 1
M Konstruktor einer Methode Allgemeine Java-Themen 35
A HashMap Methode "get()"-Problem Allgemeine Java-Themen 28
E Hat der Compiler einen Fehler oder warumbeendet return nicht eine Methode ? Allgemeine Java-Themen 7
T Sinn einer toString Methode Allgemeine Java-Themen 3
T Split() Methode funktioniert nicht?! Allgemeine Java-Themen 11
L Methoden Über Reflections eine Methode mit aufrufen Allgemeine Java-Themen 3
S Kann ich eine Methode schreiben die alle Arten von funktionalen Interfaces akzeptiert..? Allgemeine Java-Themen 21
L ToString-Methode Allgemeine Java-Themen 6
X Datentypen NPE in längerer Methode Allgemeine Java-Themen 12
I Methoden Generics-Methode Allgemeine Java-Themen 3
H Strategy Pattern - changeColor() Methode - input rgd oder hex einlesen Allgemeine Java-Themen 1
T statische Variable und nicht-statische Methode Allgemeine Java-Themen 2
B Aufruf der Methode ergibt eine Exception Allgemeine Java-Themen 13
M Wie kann ich ein int[] Array in einer Methode benutzen? Allgemeine Java-Themen 6
M Wie kann man eine void Methode mit Variablen von zwei verschiedenen Objekten ausführen? Allgemeine Java-Themen 15
F Was ist der Dateityp meines Parameters für die Main Methode. Allgemeine Java-Themen 6
F Variablen Palindromzahl (Probleme mit Methode) Allgemeine Java-Themen 9
B APi methode kurz anhalten Allgemeine Java-Themen 8
P Methode aus anderem Paket aufrufen Allgemeine Java-Themen 1
K ursprüngliche ArrayList ändert sich bei Übergabe in Methode Allgemeine Java-Themen 18
R Rekursive Methode Allgemeine Java-Themen 8
ReinerCoder Methode einer Klasse meldet Fehler "misplaced construct(s)" Allgemeine Java-Themen 13
R Wo ist mein Fehler in der Methode DRINGEND Allgemeine Java-Themen 9
I Collection - contains-Methode überschreiben (anonyme innere Klasse) Allgemeine Java-Themen 4
E RMI NULL-Pointer-Exeception wenn der RMI-Proxy eine Methode deligiert Allgemeine Java-Themen 2
S Methoden Liste soll Methode aus innerer Klasse aufrufen Allgemeine Java-Themen 4
M Methoden Generische Methode für ArrayList Allgemeine Java-Themen 7
D HTTP Aufruf einer Methode aus einem Servlet heraus Allgemeine Java-Themen 0
C Threads Methode verhält sich merkwürdig Allgemeine Java-Themen 18
R rekursive und iterative Methode Allgemeine Java-Themen 3
P Methoden Anwendung der allMatch()-Methode Allgemeine Java-Themen 5
G Programm, das nach abgearbeiteter main Methode weiterläuft Allgemeine Java-Themen 72
D Methoden Methode zum Steinschnitt Allgemeine Java-Themen 2
U OOP Warum kann ich aus meiner Methode keinen String auslesen Allgemeine Java-Themen 4
T Methoden Methode zum durchsuchen einer ArrayList Allgemeine Java-Themen 8
D Returnwert aus einer Methode gerundet ausgeben lassen Allgemeine Java-Themen 2
S equals-Methode bestimmer Klassen abfangen Allgemeine Java-Themen 2
H Methoden Methode 'updateItem' der Klasse 'TreeCell' Allgemeine Java-Themen 3
snipesss Methode greift nicht auf JTextPanel zu Allgemeine Java-Themen 3
R Methode in Methode voraussetzen Allgemeine Java-Themen 8
S Überschriebene Methode der Oberklasse der Oberklasse aufrufen. Allgemeine Java-Themen 5
D Methode dynamisch aufrufen Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben