Jahrdifferenz in Eclipse berechnen mit dem Aktuellen Jahr?
Hallo,
wir sollen mit einer Methode das alter unseres Autos berechnen. Damit wir aber nicht jedes Jahr unsere Jahreszahl ändern müssen, sollen wir auf das Jahr des Systems zugreifen. Mein Programm meldet mir einen Fehler! Nach Zahlreichen recherchen im Internet bin ich bei diesem Punkt angekommen:
import java.util.Date;
public Date curdate = new Date(System.currentTimeMillis());
public Date getDate() { return curdate; }
public void setDate(Date d) {
this.curdate = d;
}
public int alter(){
int ergebnis = curdate - baujahr;
return ergebnis;
}
jetzt ist es so, dass in der zeile int ergebnis = curdat - baujahr steht, dass curdate nicht als integer definiert ist. Wie mache ich das? Bei meinen Zahlreichen suchen im Internet hatte ich noch keine Lösung gefunden. Vielleicht könnt ihr mir ja helfen! Oder soll ich nicht "Date" nutzen? Bei meiner Suche im Internet hatte ich noch den GregorianCalendar gefunden, aber dieser sieht noch weitaus komplizierter aus.
Grüße
4 Antworten
![](https://images.gutefrage.net/media/default/user/14_nmmslarge.png?v=1551279448000)
Wie Gehilfling schon richtigerweise schrieb. Kannst du dir aus dem Calendarobjekt die notwendigen Informationen holen.
Der absolut einfachste Weg wäre folgender:
int baujahr = 2014; int aktuellesJahr = Calendar.getInstance().get(Calendar.YEAR); int alter = aktuellesJahr - baujahr;
Soweit sollte das für deine Übungen reichen.
Theoretisch hast du ein Problem, da keine Tage berücksichtigt sind. aber wie gesagt, für die Übung sollte es reichen.
Calendar.getInstance() ohne weiteres gibt dir ein umfangreiches Objekt welches auch den aktuellen Datums-Wert besitzt.
![](https://images.gutefrage.net/media/user/chokdee/1449497871899_nmmslarge__213_27_483_483_cc989a5bceae6f1c229412df9921a205.jpg?v=1449497874000)
Dafür gibt es in der Calendar Klasse bereits Methoden.
Calendar calendar = Calendar.getInstance();
calendar.roll(Calendar.YEAR, 1);
Date d = calendar.getTime();
![](https://images.gutefrage.net/media/default/user/9_nmmslarge.png?v=1551279448000)
Eigentlich ist der GregorianCalendar hier wirklich die bessere Alternative, da er dir z. B. einfach die Jahreszahl ausgeben kann. Date arbeitet ausschließlich mit Millisekunden sein dem 01.01.1970. Machbar ist es aber trotzdem, ist aber umständlich.
Erstmal kannst du dir die curdate variable vermutlich sparen. Wenn du das aktuelle Datum willst, ist es meistens sinnvoller, es zum Zeitpunkt der Ausführung jedes mal neu zu ermitteln. Den getter verwendest du hier gar nicht. Außerdem ist new Date(System.currentTimeMillis()) exakt das gleiche wie new Date(). Wenn du direkt die Systemzeit in Millisekunden nimmst, kannst du dir daraus natürlich das Jahr errechnen und die Differenz zum Baujahr ermitteln, aber wie gesagt, das ist nicht ganz so einfach (weil nicht jedes Jahr gleich lang ist).
![](https://images.gutefrage.net/media/user/Gehilfling/1444749034_nmmslarge.jpg?v=1444749034000)
Erstelle dir eine Integer-Variable, welche dann folgenden Wert erhält:
int year = Calendar.getInstance().get(Calendar.YEAR);
![](https://images.gutefrage.net/media/user/Gehilfling/1444749034_nmmslarge.jpg?v=1444749034000)
Er möchte doch das Alter eines Fahrzeugs bestimmen? Dafür braucht er doch das aktuelle Jahr, damit er die Differenz zum Baujahr bilden kann. Das hab ich ihm aber noch selbst zugetraut.
zwar ist Calendar.getInstance() schonmal ein guter hinweis, aber zur Lösung fehlt noch was.
Per get(Calendar.YEAR) bekommt man nur das aktuelle Jahr raus - Jedoch braucht man das zur Lösung des Problems nicht.