2012-10-05 22 views
5

sto facendo un'app che è collegata per ottenere l'età di una persona in base all'input dato della data di compleanno. per quello sto ottenendo il numero totale di giorni da quella data alla data corrente dal codice qui sotto.Android Come si modifica il numero totale di giorni in anni, mesi e giorni esattamente?

 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); 

da questo codice ottengo il numero totale di giorni. quindi il mio requisito è convertire il numero totale di giorni per anni, mesi e giorni esatti .. si prega di aiuto ....

+0

Esistono operatori matematici chiamati% e /, rispettivamente per modulo e divisione. 12 mesi in un anno, 30 giorni in un mese, 356 giorni in un anno. Questo dovrebbe essere abbastanza –

+0

@VinaySShenoy come fare quello qualsiasi semplice esempio ... – NagarjunaReddy

+0

@VinaySShenoy per alcuni anni abbiamo 355 giorni e per mesi 31,30,29 e 28 giorni. come possiamo risolvere questo problema –

risposta

6

si dovrebbe utilizzare la classe Duration:

Duration duration = new Duration(); 
duration.add(today); 
duration.substract(birthDate); 
int years = duration.getYears(); 
int months = duration.getMonths(); 
int days = duration.getDays(); 

Alcune altre alternative includono l'utilizzo di un libreria dedicata alla gestione del tempo: tempo Joda. Vedi Calculate age in Years, Months, Days, Hours, Minutes, and Seconds

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);; 
    } 
Problemi correlati