Here you can find the source of compareDate(String date1, String date2, int what)
public static int compareDate(String date1, String date2, int what) throws ParseException
//package com.java2s; import java.sql.Timestamp; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class Main { public static int compareDate(String date1, String date2, int what) throws ParseException { DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); Date objDate1 = df.parse(date1); Date objDate2 = df.parse(date2); return compareDate(objDate1, objDate2, what); }/*from www.j av a 2 s. co m*/ public static int compareDate(Date date1, Date date2, int what) { Calendar objCalendar1 = Calendar.getInstance(); objCalendar1.setTime(date1); Calendar objCalendar2 = Calendar.getInstance(); objCalendar2.setTime(date2); int iResult = compare(objCalendar1, objCalendar2, what); if (iResult > 0) { return 1; } else if (iResult < 0) { return -1; } else { return 0; } } public static int compare(Calendar c1, Calendar c2, int what) { int number = 0; switch (what) { case Calendar.YEAR: number = c1.get(Calendar.YEAR) - c2.get(Calendar.YEAR); break; case Calendar.MONTH: int years = compare(c1, c2, Calendar.YEAR); number = 12 * years + (c1.get(Calendar.MONTH) - c2.get(Calendar.MONTH)); break; case Calendar.DATE: number = (int) ((c1.getTimeInMillis() - c2.getTimeInMillis()) / (1000 * 60 * 60 * 24)); break; default: number = (int) ((c1.getTimeInMillis() - c2.getTimeInMillis()) / (1000 * 60 * 60 * 24)); break; } return number; } public static int compare(Timestamp t1, Timestamp t2, int what) { Calendar c1 = Calendar.getInstance(); c1.setTime(t1); Calendar c2 = Calendar.getInstance(); c2.setTime(t2); int number = 0; switch (what) { case Calendar.YEAR: number = c1.get(Calendar.YEAR) - c2.get(Calendar.YEAR); break; case Calendar.MONTH: int years = compare(c1, c2, Calendar.YEAR); number = 12 * years + (c1.get(Calendar.MONTH) - c2.get(Calendar.MONTH)); break; case Calendar.DATE: number = (int) ((c1.getTimeInMillis() - c2.getTimeInMillis()) / (1000 * 60 * 60 * 24)); break; default: number = (int) ((c1.getTimeInMillis() - c2.getTimeInMillis()) / (1000 * 60 * 60 * 24)); break; } return number; } }