Alter berechnen

  • Themenstarter Themenstarter Gott1992
  • Beginndatum Beginndatum
G

Gott1992

Gast
Hey
ich habe einen String, der wie ein Datum ist ( tt.mm.yyyy )
Beispiel:
Java:
String Datum = "12.05.1990";

Wie kann ich mit einem einfachem Java Code das Alter (in Jahren, keine genauten Tage) berechnen ?
 
Java:
String[] daten = Datum.split("\\.");

// Anschließend kannst du dann sowas machen:
int tag = Integer.parseInt(daten[0]);
int monat = Integer.parseInt(daten[1]);
int jahr =Integer.parseInt(daten[2]);

Also damit solltest du dann ohne Probleme eine Differenz zu dem aktuellen Datum hinbekommen 🙂
 
Indem man 2011 - 1990 macht.

Das aktuelle Datum kann man sich mit dem Calendar holen.

Wenn man dann noch den Monat vergleicht, kann man sehen ob vollendet oder nicht.

Gruß,

Martin
 
ungefähr...

Java:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;


public class Test {
    
    public static void main(String[] args) throws ParseException {
        SimpleDateFormat df = new SimpleDateFormat("dd.MM.yyyy");
        String datumString = "12.05.1990"; 
        
        Date datum = df.parse(datumString);
        Date heute = new Date();
        long ms = heute.getTime()-datum.getTime();
        long sek= ms/1000;
        long min = sek/60;
        long std = min/60;
        long tage = std/24;
        long jahre = tage/365;
        System.out.println("jahre: "+jahre);
    }

}
 
Oder so:
Java:
	private int diffYears(Date dtStart, Date dtEnd) {
		GregorianCalendar calStart = new GregorianCalendar();
		GregorianCalendar calEnd = new GregorianCalendar();
		calStart.setTime(dtStart);
		calEnd.setTime(dtEnd);
		int compareTo = calEnd.compareTo(calStart);
		if (compareTo < 0) {
			return -diffYears(dtEnd, dtStart);
		}
		int y0 = calStart.get(java.util.Calendar.YEAR);
		int y1 = calEnd.get(java.util.Calendar.YEAR);
		int years = y1 - y0;
		calStart.add(Calendar.YEAR, years);
		compareTo = calEnd.compareTo(calStart);
		if (compareTo < 0) {
			return years - 1;
		} else {
			return years;
		}
	}
 
Oder wie njans vorgeschlagen hat:
Java:
import java.io.*;

public class Alter {
public static void main(String[] args) {
System.out.println("Datum eingeben in dd.MM.yyyy Format");
BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
try {
String datum = input.readLine();
String[] daten = datum.split("\\.");
 
int tag = Integer.parseInt(daten[0]);
int monat = Integer.parseInt(daten[1]);
int jahr =Integer.parseInt(daten[2]);

int alter = 2011 - jahr;
System.out.println("Du bist "+alter+" Jahre alt");
}
catch(IOException e) {
e.printStackTrace();
}

}
}

Wobei hier natürlich nicht geprüft wird ob man schon bereits Geburtstag hatte oder nicht, außerdem könnte man bei dieser Ausführung auch den 40.40.2030 angeben.... aber das sind ja dann nur noch Schönheitskorrekturen 😀
 
oder so:
Java:
	public static int getAge(int day, int month, int year) {
		Calendar now = Calendar.getInstance();
		int currentMonth = now.get(Calendar.MONTH)+1;
		int possibleAge = now.get(Calendar.YEAR) - year;
		return currentMonth < month || (currentMonth == month && now.get(Calendar.DATE) < day)
				? possibleAge-1
				: possibleAge;
	}

month ist dabei 1-based
 
Oder wie njans vorgeschlagen hat:
Java:
import java.io.*;

public class Alter {
public static void main(String[] args) {
System.out.println("Datum eingeben in dd.MM.yyyy Format");
BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
try {
String datum = input.readLine();
String[] daten = datum.split("\\.");
 
int tag = Integer.parseInt(daten[0]);
int monat = Integer.parseInt(daten[1]);
int jahr =Integer.parseInt(daten[2]);

int alter = 2011 - jahr;
System.out.println("Du bist "+alter+" Jahre alt");
}
catch(IOException e) {
e.printStackTrace();
}

}
}

Wobei hier natürlich nicht geprüft wird ob man schon bereits Geburtstag hatte oder nicht, außerdem könnte man bei dieser Ausführung auch den 40.40.2030 angeben.... aber das sind ja dann nur noch Schönheitskorrekturen 😀

Nächstes Jahr wird das Programm bei deiner Umsetzung aber falsche Ergebnisse liefern. 😉
 
Hallo auch,

es gibt zudem noch den (wirklich komfortablen) Weg mit der Joda-Time Library.

Java:
DateTime birth = DateTime.parse("12.05.1981", DateTimeFormat.forPattern("dd.MM.yyyy"));
int age = new DateTime().year().get() - birth.year().get();

Voilá 😉

-Colin-
 

Zurück
Oben