Open In App

How to Build Age Calculator in Android Studio?

Improve
Improve
Like Article
Like
Save
Share
Report

Hello geeks, today we are going to make an application to calculate Age or time period between two dates. By making this application one can calculate his/her exact age, also one can calculate the exact difference between two dates.

Prerequisites:

Before making this application, you can go through the article Program to calculate age to have a better understanding of the concepts used in this application.

What we are going to build in this article? 

In this application, we will be using two DatePickers, where user can select the date no. 1 and 2 respectively. A Button is used to perform the calculation part and show the result in a TextView named as result. Note that we are going to implement this application using Java language. A sample video is given below to get an idea about what we are going to do in this article.

Step by Step Implementation

Step 1: Creating a new project

  • Open a new project.
  • We will be working on Empty Activity with language as Java. Leave all other options unchanged.
  • You can change the name of the project at your convenience.
  • There will be two default files named activity_main.xml and MainActivity.java.

If you don’t know how to create a new project in Android Studio then you can refer to How to Create/Start a New Project in Android Studio? 

Step 2: Navigate to Build scripts > build.gradle(module) file and add the following dependency to it

implementation 'joda-time:joda-time:2.9.1'

Step 3: Working with the activity_main.xml file

Here we will design the user interface of our application. We will be using the following components for their respective works:

  • Button 1: to pick the first date user wants to enter.
  • Button 2: to pick the second date user wants to enter.
  • Button 3: to perform the calculation
  • TextView: to show the final output(age).

Navigate to the app > res > layout > activity_main.xml and add the below code to that file.

XML




<?xml version="1.0" encoding="utf-8"?>
<!-- Parent layout as linear layout-->
<LinearLayout
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical"
    android:padding="10dp"
    tools:context=".MainActivity">
 
    <!-- linear layout to show datepickers-->
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
 
        <!-- to select the first date-->
        <Button
            android:id="@+id/bt_birth"
            android:layout_width="150dp"
            android:layout_height="50dp"
            android:background="@android:color/transparent"
            android:drawableRight="@drawable/ic_baseline"
            android:text="01/01/2021"
            android:textColor="@color/black"
            android:textSize="13sp" />
 
        <!-- displaying message as "to"-->
        <TextView
            android:layout_width="100dp"
            android:layout_height="50dp"
            android:gravity="center_horizontal"
            android:text="To"
            android:textColor="@color/black"
            android:textSize="20sp"
            android:textStyle="bold" />
 
        <!-- to display date number 2-->
        <Button
            android:id="@+id/bt_today"
            android:layout_width="145dp"
            android:layout_height="50dp"
            android:background="@android:color/transparent"
            android:drawableRight="@drawable/ic_baseline"
            android:textColor="@color/black"
            android:textSize="13sp" />
         
    </LinearLayout>
    <!-- to perform the calculation-->
    <Button
        android:id="@+id/btn_calculate"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:text="calculate" />
 
    <!-- to display the message "Result"-->
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="50dp"
        android:text="Result"
        android:textColor="@android:color/holo_blue_bright"
        android:textSize="30sp"
        android:textStyle="bold" />
 
    <!-- To show the final output(age)-->
    <TextView
        android:id="@+id/tv_result"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:text="0 Years | 0 Months | 0 Days"
        android:textSize="25sp"
        android:textStyle="bold" />
 
</LinearLayout>


After implementing the above code, the design of the activity_main.xml file looks like this.

Step 4: Working with MainActivity.java file

In MainActivity.java file onClickListener is used on buttons to pick the date and to perform the calculation. Use the following code in the MainActivity.java file.

Java




import android.app.DatePickerDialog;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.TextView;
import android.widget.Toast;
 
import androidx.appcompat.app.AppCompatActivity;
 
import org.joda.time.Period;
import org.joda.time.PeriodType;
 
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
 
public class MainActivity extends AppCompatActivity {
 
    // initializing variables
    Button btn_birth, btn_today, btn_calculate;
    TextView tvResult;
    DatePickerDialog.OnDateSetListener dateSetListener1, dateSetListener2;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        // assign variables
        btn_birth = findViewById(R.id.bt_birth);
        btn_today = findViewById(R.id.bt_today);
        btn_calculate = findViewById(R.id.btn_calculate);
        tvResult = findViewById(R.id.tv_result);
 
        // calendar format is imported to pick date
        Calendar calendar = Calendar.getInstance();
         
        // for year
        int year = calendar.get(Calendar.YEAR);
         
        // for month
        int month = calendar.get(Calendar.MONTH);
         
        // for date
        int day = calendar.get(Calendar.DAY_OF_MONTH);
 
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd/MM/yyyy");
 
        // to set the current date as by default
        String date = simpleDateFormat.format(Calendar.getInstance().getTime());
        btn_today.setText(date);
 
        // action to be performed when button 1 is clicked
        btn_birth.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                // date picker dialog is used
                // and its style and color are also passed
                DatePickerDialog datePickerDialog = new DatePickerDialog(MainActivity.this, android.R.style.Theme_Holo_Light_Dialog_MinWidth, dateSetListener1, year, month, day
                );
                // to set background for datepicker
                datePickerDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
                datePickerDialog.show();
            }
        });
 
        // it is used to set the date which user selects
        dateSetListener1 = new DatePickerDialog.OnDateSetListener() {
            @Override
            public void onDateSet(DatePicker view, int year, int month, int day) {
                // here month+1 is used so that
                // actual month number can be displayed
                // otherwise it starts from 0 and it shows
                // 1 number less for every month
                // example- for january month=0
                month = month + 1;
                String date = day + "/" + month + "/" + year;
                btn_birth.setText(date);
            }
        };
 
        // action to be performed when button 2 is clicked
        btn_today.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                // date picker dialog is used
                // and its style and color are also passed
                DatePickerDialog datePickerDialog = new DatePickerDialog(MainActivity.this, android.R.style.Theme_Holo_Light_Dialog_MinWidth, dateSetListener2, year, month, day
                );
                // to set background for datepicker
                datePickerDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
                datePickerDialog.show();
            }
        });
 
        // it is used to set the date which user selects
        dateSetListener2 = new DatePickerDialog.OnDateSetListener() {
            @Override
            public void onDateSet(DatePicker view, int year, int month, int day) {
                // here month+1 is used so that
                // actual month number can be displayed
                // otherwise it starts from 0 and it shows
                // 1 number less for every month
                // example- for january month=0
                month = month + 1;
                String date = day + "/" + month + "/" + year;
                btn_today.setText(date);
            }
        };
 
        // action to be performed when calculate button is clicked
        btn_calculate.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                // converting the inputted date to string
                String sDate = btn_birth.getText().toString();
                String eDate = btn_today.getText().toString();
                SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("dd/MM/yyyy");
                try {
                    // converting it to date format
                    Date date1 = simpleDateFormat1.parse(sDate);
                    Date date2 = simpleDateFormat1.parse(eDate);
 
                    long startdate = date1.getTime();
                    long endDate = date2.getTime();
 
                    // condition
                    if (startdate <= endDate) {
                        org.joda.time.Period period = new Period(startdate, endDate, PeriodType.yearMonthDay());
                        int years = period.getYears();
                        int months = period.getMonths();
                        int days = period.getDays();
 
                        // show the final output
                        tvResult.setText(years + " Years |" + months + "Months |" + days + "Days");
                    } else {
                        // show message
                        Toast.makeText(MainActivity.this, "BirthDate should not be larger than today's date!", Toast.LENGTH_SHORT).show();
                    }
                } catch (ParseException e) {
                    e.printStackTrace();
                }
            }
        });
    }
}


Congratulations! we have successfully the application to calculate the age or difference between two dates. Here is the final output of our application.

Output:



Last Updated : 25 Nov, 2022
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads