Jahre sind in Androids Datum Klassen falsch
-
09-10-2019 - |
Frage
Ich versuche, Daten zu vergleichen und ich habe festgestellt, wo mein Code schief geht, aber ich weiß nicht, warum.
Ich versuche, ein Datum mit dem heutigen Datum zu vergleichen (mit gregorianischen Kalender nur). Ich habe die heutige Datum ausgedruckt, wo immer es im Code genannt wird und an einem Ort es auf magische Weise von Jahr wechselt 2010 zu Jahr 3910 (heute Jahr + 1900).
Kennt jemand einen Grund dafür?
//Prints out 2010
System.out.println("TodaysDate.getYear():\t"+todaysDate.getYear());
//Prints out 2010
System.out.println(todaysDate);
//Getting a year from a string (it is 2010)
todaysDate.setYear(Integer.parseInt(yea));
//Prints out 2010
System.out.println("TodaysDate.getYear():\t"+todaysDate.getYear());
//Prints out 3910
System.out.println(todaysDate);
Lösung
Das Datum wird in der Regel als „Anzahl der Jahre seit 1900“ gespeichert, so dass Sie für das kompensieren müssen. Sie können, dass in der Dokumentation zu Date
siehe: http://developer.android.com /reference/java/util/Date.html
EDIT: Ich sollte erwähnen, was ich als Kommentar gepostet. Jeff Sharkey empfohlen gegen die Kalender-Klasse (wenn Sie das auch verwenden). android.text.format.DateUtils ist viel leichter (Sie werden sehen, dass das Telefon für ein wenig abgewürgt, wenn Sie zuerst die Kalender-Klasse laden, vor allem auf alte Telefone). DateUtils ist in Android 1.5 oder höher verfügbar.