28. september 2005 - 21:04Der er
8 kommentarer og 1 løsning
Dato difference
Udfra en fødselsdato, af formattet ddmmyy, vil jeg gerne kunne regne den tilhørendes persons alder ud. Det er ikke noget problem at udtage yy fra CPR nr, og få datoen for i dag. Herefter kan jeg også let trække yy fra år 2005, men herved får jeg samme alder uanset om det er før eller efter personen fødselsdato. Er der da i JAVE ikke en indbygget metode til at finde f.eks. en alder med?
private static int age(int y, int m, int d) { Calendar cal = new GregorianCalendar(y, m, d); Calendar now = new GregorianCalendar(); int res = now.get(Calendar.YEAR) - cal.get(Calendar.YEAR); if((cal.get(Calendar.MONTH) > now.get(Calendar.MONTH)) || (cal.get(Calendar.MONTH) == now.get(Calendar.MONTH) && cal.get(Calendar.DAY_OF_MONTH) > now.get(Calendar.DAY_OF_MONTH))) { res--; } return res; }
Der er noget mystisk ved koden, når cal.get(Calendar.MONTH) == now.get(Calendar.MONTH). Her regner den forkert, og jeg har ikke lige kunne se, hvor betingelsen fejler.
private static int age(int y, int m, int d) { Calendar cal = new GregorianCalendar(y, m, d); Calendar now = new GregorianCalendar(); int res = now.get(Calendar.YEAR) - cal.get(Calendar.YEAR); if((cal.get(Calendar.MONTH) > now.get(Calendar.MONTH)) || (cal.get(Calendar.MONTH) == now.get(Calendar.MONTH) && cal.get(Calendar.DAY_OF_MONTH) < now.get(Calendar.DAY_OF_MONTH))) { res--; } return res;
og beklager forvirringen med > versus < lige pludselig narrede jeg mig selv
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.