09. marts 2011 - 13:57Der er
5 kommentarer og 1 løsning
Udregn alder fra CPR
Hej kloge hoveder,
Er det overhovedet muligt at udregne en alder ud fra et cpr. Se f.eks. følgende: a: 190281-xxxx b: 190209-xxxx
Man kan med fordel antage at a er 30 år, men hvor gammel er b? 1 eller 101?
Jeg har lavet en stump kode, som udregner alderen, men den funker ikke helt efter planen, da den jo bruger år som 81 og 09 (og ikke 1981 og 1909/2009): ----- private String calculateAge(String s) { try { int y = Integer.parseInt(s.substring(4, 6)); int m = Integer.parseInt(s.substring(2, 4)) - 1; int d = Integer.parseInt(s.substring(0, 2)); int century = 0; char lbNr = s.charAt(6); switch (lbNr) { case '0': case '1': case '2': case '3': century = 1900; break; case '4': case '9': century = y < 37 ? 2000 : 1900; break; default: // 5, 6, 7, 8 century = y < 37 ? 2000 : y > 57 ? 1800 : 0; } y += century; 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 String.valueOf(res); } catch (Exception e) { log.info("Error calculating age for cpr: " + s); return ""; } } -----
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.