We can calculate difference between two dates in milliseconds using date1.getTime() – date2.getTime().
However, if you need the difference in the days, months or years, following utility methods might be of help :
Calculate difference in days between two Dates
public static int getDayDifference(Date date1, Date date2) { long differenceInMillis = date1.getTime() - date2.getTime(); int differenceInDays = (int) (differenceInMillis / (24 * 60 * 60 * 1000)); return differenceInDays; }
Calculate difference in months between two Dates
public static int getMonthDifference(Date date1, Date date2) { Calendar cal1 = Calendar.getInstance(); cal1.setTime(date1); Calendar cal2 = Calendar.getInstance(); cal2.setTime(date2); int differenceInMonths = cal1.get(Calendar.MONTH) - cal2.get(Calendar.MONTH) + (cal1.get(Calendar.YEAR) - cal1.get(Calendar.YEAR)) * 12; return differenceInMonths; }
Calculate difference in years between two Dates
public static int getYearDifference(Date date1, Date date2) { Calendar cal1 = Calendar.getInstance(); cal1.setTime(date1); Calendar cal2 = Calendar.getInstance(); cal2.setTime(date2); int diffeInYears = cal1.get(Calendar.YEAR) - cal2.get(Calendar.YEAR); return diffeInYears; }
Here is the complete program :
package com.topjavatutorial.app; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class DateUtil { public static void main(String[] args) { SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); Date date1, date2; try { date1 = sdf.parse("11/10/2017"); date2 = sdf.parse("21/3/2011"); System.out.println("Difference in days between the dates : " + getDayDifference(date1, date2)); System.out.println("Difference in months between the dates : " + getMonthDifference(date1, date2)); System.out.println("Difference in years between the dates : " + getYearDifference(date1, date2)); } catch (ParseException e) { e.printStackTrace(); } } public static int getDayDifference(Date date1, Date date2) { long differenceInMillis = date1.getTime() - date2.getTime(); int differenceInDays = (int) (differenceInMillis / (24 * 60 * 60 * 1000)); return differenceInDays; } public static int getMonthDifference(Date date1, Date date2) { Calendar cal1 = Calendar.getInstance(); cal1.setTime(date1); Calendar cal2 = Calendar.getInstance(); cal2.setTime(date2); int differenceInMonths = cal1.get(Calendar.MONTH) - cal2.get(Calendar.MONTH) + (cal1.get(Calendar.YEAR) - cal1.get(Calendar.YEAR)) * 12; return differenceInMonths; } public static int getYearDifference(Date date1, Date date2) { Calendar cal1 = Calendar.getInstance(); cal1.setTime(date1); Calendar cal2 = Calendar.getInstance(); cal2.setTime(date2); int diffeInYears = cal1.get(Calendar.YEAR) - cal2.get(Calendar.YEAR); return diffeInYears; } }
Output :
Difference in days between the dates : 2396
Difference in months between the dates : 7
Difference in years between the dates : 6
© 2017 – 2018, https:. All rights reserved. On republishing this post, you must provide link to original post