2012-10-05 33 views
5

मैं एक ऐसा ऐप कर रहा हूं जो जन्मदिन की तारीख के दिए गए इनपुट के अनुसार किसी व्यक्ति की आयु प्राप्त करने से संबंधित है। इसके लिए मुझे उस तारीख से दिनों की कुल संख्या नीचे दी गई कोड से वर्तमान तिथि तक मिल रही है।एंड्रॉइड कैसे दिन, महीनों और दिनों में कुल दिनों को बदलने के लिए?

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

इस कोड से मुझे कुल दिनों की संख्या मिल रही है। इसलिए मेरी आवश्यकता वर्ष, महीनों और दिनों वास्तव में करने के लिए दिनों की कुल संख्या परिवर्तित है .. कृपया मदद ....

+0

क्रमशः मॉड्यूलस और विभाजन के लिए उपयोग किए गए गणितीय ऑपरेटरों को क्रमशः% और/कहा जाता है। एक वर्ष में 12 महीने, एक महीने में 30 दिन, एक वर्ष में 356 दिन। यह पर्याप्त होना चाहिए। –

+0

@VinaySShenoy यह कैसे एक आसान उदाहरण है ... – NagarjunaReddy

+0

@VinaySShenoy कुछ वर्षों के लिए हमारे पास 355 दिन और 31,30,29 और 28 दिनों के लिए हैं। हम इस समस्या को कैसे हल कर सकते हैं –

उत्तर

6

आप Duration वर्ग का उपयोग करना चाहिए:

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

कुछ अन्य विकल्प एक का उपयोग शामिल है पुस्तकालय समय प्रबंधन के लिए समर्पित: जोडा समय। देखें 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);; 
    }