0

I am beginner in android studio, and create an app of age calculator but i don't understand that how to calculate next birthday from current date and how to convert your age into weeks, please help Thank you,

2 Answers2

0

This will help to get remaining days

import java.text.*;
import java.util.*;

    public class NextBday {

        public void printRemainingDays()
        {
            Calendar earlier = Calendar.getInstance();
            Calendar later = Calendar.getInstance();

            int userDay, currentDay, currentYear, currentMonth;
            String delimeter = "/";
            String dob = "05/15/1980";
            String bDate[] = dob.split(delimeter,3);

            currentYear = earlier.get(Calendar.YEAR);
            currentMonth = earlier.get(Calendar.MONTH);
            currentDay = earlier.get(Calendar.DATE);

            earlier.set(currentYear, currentMonth, currentDay);



            if(earlier.get(Calendar.MONTH) >= later.get(Calendar.MONTH))
            {
                later.set(currentYear+1, Integer.valueOf(bDate[0]), Integer.valueOf(bDate[1]));
            }
            else
                later.set(currentYear, Integer.valueOf(bDate[0]), Integer.valueOf(bDate[1]));

            int earlierDays = earlier.get( Calendar.DAY_OF_YEAR );
            int laterDays = later.get( Calendar.DAY_OF_YEAR );
            long remain = laterDays - earlierDays;
            System.out.println(remain);

        }

    }

I hope this will help!

Alpesh Sorathiya
  • 510
  • 3
  • 13
0

this is correct Way so please try this

public static String calculateAge(String strDate) {

    int years = 0;
    int months = 0;
    int days = 0;

    try {
        long timeInMillis = Long.parseLong(strDate);
        Date birthDate = new Date(timeInMillis);


        //create calendar object for birth day
        Calendar birthDay = Calendar.getInstance();
        birthDay.setTimeInMillis(birthDate.getTime());
        //create calendar object for current day
        long currentTime = System.currentTimeMillis();
        Calendar now = Calendar.getInstance();
        now.setTimeInMillis(currentTime);
        //Get difference between years
        years = now.get(Calendar.YEAR) - birthDay.get(Calendar.YEAR);
        int currMonth = now.get(Calendar.MONTH) + 1;
        int birthMonth = birthDay.get(Calendar.MONTH) + 1;

        //Get difference between months
        months = currMonth - birthMonth;


        //if month difference is in negative then reduce years by one and calculate the number of months.
        if (months < 0) {
            years--;
            months = 12 - birthMonth + currMonth;
            if (now.get(Calendar.DATE) < birthDay.get(Calendar.DATE))
                months--;
        } else if (months == 0 && now.get(Calendar.DATE) < birthDay.get(Calendar.DATE)) {
            years--;
            months = 11;
        }
        //Calculate the days
        if (now.get(Calendar.DATE) > birthDay.get(Calendar.DATE))
            days = now.get(Calendar.DATE) - birthDay.get(Calendar.DATE);
        else if (now.get(Calendar.DATE) < birthDay.get(Calendar.DATE)) {
            int today = now.get(Calendar.DAY_OF_MONTH);
            now.add(Calendar.MONTH, -1);
            days = now.getActualMaximum(Calendar.DAY_OF_MONTH) - birthDay.get(Calendar.DAY_OF_MONTH) + today;
        } else {
            days = 0;
            if (months == 12) {
                years++;
                months = 0;
            }
        }
        //adarsh
        if (currMonth > birthMonth) {
            if (birthDay.get(Calendar.DATE) > now.get(Calendar.DATE)) {
                months = months - 1;
            }
        }//---------------------------------

    } catch (Exception e) {
        e.printStackTrace();
    }
    //Create new Age object
    return years + " Y " + months + " M " + days + " days";
}
adarsh
  • 403
  • 3
  • 8