Header Ads


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

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



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



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


No comments

Powered by Blogger.