1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
| package test;
import java.util.Calendar;
import java.util.GregorianCalendar;
/**
* Test pour difference de dates (sur l'année)
* @author André Sébastien.
*/
public class TestDate {
/** Creates a new instance of TestDate */
public TestDate() {
}
/** Return the number of complete year since dateA between dateA and dateB
* @param dateA Minimum date threshold
* @param dateB Maximum date threshold
*
* Remark: if dateA > dateB, dateB is used as minimum threshold.
*
* @return Complete years since dateA between dateA and dateB
*/
public static int diffYear(Calendar dateA , Calendar dateB )
{ if( dateA == null || dateB == null ) throw new IllegalArgumentException("dateA and dateB can't be null");
Calendar minDate = ( dateA.compareTo(dateB) > 0 ? dateB : dateA );
Calendar maxDate = ( minDate == dateA ? dateB : dateA );
Calendar dummyDate = (Calendar)maxDate.clone();
dummyDate.set( Calendar.DAY_OF_MONTH , minDate.get( Calendar.DAY_OF_MONTH ) );
dummyDate.set( Calendar.MONTH , minDate.get( Calendar.MONTH ) );
boolean lastYearCompleted = (dummyDate.compareTo(maxDate) < 0);
int delta = maxDate.get(Calendar.YEAR) - minDate.get(Calendar.YEAR);
if( ! lastYearCompleted ) delta = delta - 1;
// Result
int result = Math.max( delta , 0 );
System.out.println("Difference = " + result);
return result;
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// 01/03/2002 - 01/02/2005 == 2
diffYear( new GregorianCalendar(2002,02,01) , new GregorianCalendar(2005,01,01) );
// 24/07/2004 - 28/09/2004 == 0
diffYear( new GregorianCalendar(2004,06,24) , new GregorianCalendar(2004,8,28) );
// 13/03/2003 - 20/07/2005 == 2
diffYear( new GregorianCalendar(2003,02,13) , new GregorianCalendar(2005,06,20) );
// 13/03/2003 - 12/03/2005 == 1
diffYear( new GregorianCalendar(2003,02,13) , new GregorianCalendar(2005,02,12) );
}
} |
Partager