Ein Jahr hat 363,7 Tage ?

Syny

Mitglied
Hallo Leute,

ich hätte mal ne komische frage warum bekomme ich wenn ich mit meinem Programm das genaue Alter einer Person bestimmen will nur mit 363,7 Tagen pro Jahr das richtige Ergebnis ?

Java:
void rechnung(int t,int m,int j)
	{
        Geburtstag = new GregorianCalendar(j,m,t);
		
		Jahrh=c.get(Calendar.YEAR);
		Monath=c.get(Calendar.MONTH);
		Tagh=c.get(Calendar.DAY_OF_MONTH);
		
		Heute = new GregorianCalendar(Jahrh,Monath,Tagh);
		long x= Geburtstag.getTimeInMillis();
		long y= Heute.getTimeInMillis();
		double alter = (y-x) / 1000 / 60 / 60 / 24;
		
		double alterinkomma=alter/363.7;
		Ergebnis.setText("Das Ergebnis ist:"+alterinkomma);
	}
j,m und t sind jeweils das geburtsjahr sowie der Tag und der Monat die mitgegeben werden.

ich weiß die syntax is net schön ^^

Wer nett wenn ihr mir das erklären könntet.
 
Zuletzt bearbeitet:
Ich würde dir für dieses Thema die JodaTime ans Herz legen, die sollte so etwas können, Stichwort Schaltjahre etc.

die Lib hat direkt auch Methoden um die Differenz in Tagen zu errechnen

Java:
		GregorianCalendar geb = new GregorianCalendar(2012, 9, 26);
		GregorianCalendar now = new GregorianCalendar(2013,9,26);
		GregorianCalendar leapYear = new GregorianCalendar(2016,9,26);
		double alter = (now.getTimeInMillis() - geb.getTimeInMillis()) / 1000 / 60 / 60 / 24;
		double alter2 = (leapYear.getTimeInMillis() - geb.getTimeInMillis()) / 1000 / 60 / 60 / 24;
		System.out.println(alter / 365.); //1.0
		System.out.println(alter2 / 365.); // 4.0027....
 
Zuletzt bearbeitet:
Definitiv solltest du joda Time nehmen!

Java:
	DateTimeFormatter timeFormatter = DateTimeFormat.forPattern("dd.MM.yyyy");
	DateTime beginn = DateTime.parse("10.07.1983", timeFormatter);
	DateTime ende = DateTime.parse("10.07.1984", timeFormatter);
	int tage = Days.daysBetween(beginn, ende).getDays();
	System.out.println(timeFormatter.print(beginn) + ":" + timeFormatter.print(ende) + "=" + tage);
	// 10.07.1983:10.07.1984=366
 

Neue Themen


Zurück
Oben