Here you can find the source of compare(Calendar c1, Calendar c2, int what)
public static int compare(Calendar c1, Calendar c2, int what)
//package com.java2s; import java.sql.Timestamp; import java.util.Calendar; public class Main { 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// w ww . ja v a 2 s . c o m + (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; } }