2012-10-05 19 views
5

estoy haciendo una aplicación que está relacionada con la edad de una persona de acuerdo con la entrada dada de la fecha de cumpleaños. para eso obtengo el número total de días desde esa fecha hasta la fecha actual del código siguiente.Android ¿Cómo cambiar el número total de días en años, meses y días exactamente?

 String strThatDay = "1991/05/10"; 
     SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MM/dd"); 
     Date d = null; 
     try { 

     try { 
     d = formatter.parse(strThatDay); 
     Log.i(TAG, "" +d); 
     } catch (java.text.ParseException e) { 

     e.printStackTrace(); 
     } 
     } catch (ParseException e) { 

     e.printStackTrace(); 
     } 
     Calendar thatDay = Calendar.getInstance(); 
     thatDay.setTime(d); //rest is the same.... 

     Calendar today = Calendar.getInstance(); 
     long diff = today.getTimeInMillis() - thatDay.getTimeInMillis(); 
     long days = diff/(24 * 60 * 60 * 1000); 

de este código estoy obteniendo el número total de días. por lo que mi requisito es convertir el número total de días a años, meses y días exactamente .. por favor ayuda ....

+0

Hay operadores matemáticos llamados% y /, utilizados para el módulo y la división, respectivamente. 12 meses en un año, 30 días en un mes, 356 días en un año. Eso debería ser suficiente. –

+0

@VinaySShenoy cómo hacer que uno sea un ejemplo simple ... – NagarjunaReddy

+0

@VinaySShenoy durante algunos años tenemos 355 días y durante meses 31,30,29 y 28 días. cómo podemos resolver este problema –

Respuesta

3
String strThatDay = "1991/05/10"; 
    SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MM/dd"); 
    Date thatDate = null; 
    try { 

    try { 
    thatDate = formatter.parse(strThatDay); 

    Calendar thatDay = Calendar.getInstance(); 
    thatDay.setTime(thatDate); 
    Calendar toDay = Calendar.getInstance(); 
    toDay.setTime(thatDate); 

    toDay.add(Calendar.DATE, noOfDays); 

    int year = toDay.getTime().getYear() - thatDay.getTime().getYear(); 
    int month = toDay.getTime().getMonth() - thatDay.getTime().getMonth(); 
    if(month<0){ 
     year-- 
     month = month+12; 
    } 
    int days = toDay.getTime().getDate() - thatDay.getTime().getDate(); 
    if(month<0){ 
     month-- 
     days = days+ toDay.getMaximum(Calendar.MONTH);; 
    } 
Cuestiones relacionadas