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
| /**
* return difference between two dates
*
* @param Date1 ( first date )
* @param Date1 ( second date )
* @param dateType value=("yyyy","MM","dd","HH","mm","ss","SSS") for type of return
* @return a number of years, months, days ... date1 - date2
*
* {talendTypes} Long
*
* {Category} TalendDate
*
* {param} date(myDate) date1 : the first date to compare
*
* {param} date(myDate2) date2 : the second date to compare
*
* {param} String("MM") dateType : the difference on the specified part
*
* {examples}
*
* ->> diffDate(2008/11/24 12:15:25, 2008/10/14 16:10:35, "yyyy") : return 0
*
* ->> diffDate(2008/11/24 12:15:25, 2008/10/14 16:10:35, "MM") : return 1
*
* ->> diffDate(2008/11/24 12:15:25, 2008/10/14 16:10:35, "dd") : return 41 #
*/
public static long diffDate(Date date1, Date date2, String dateType) {
if (date1 == null) {
date1 = new Date(0);
}
if (date2 == null) {
date2 = new Date(0);
}
if (dateType == null) {
dateType = "SSS";
}
Calendar c1 = Calendar.getInstance();
Calendar c2 = Calendar.getInstance();
c1.setTime(date1);
c2.setTime(date2);
if (dateType.equalsIgnoreCase("yyyy")) { //$NON-NLS-1$
return c1.get(Calendar.YEAR) - c2.get(Calendar.YEAR);
} else if (dateType.equals("MM")) { //$NON-NLS-1$
return (c1.get(Calendar.YEAR) - c2.get(Calendar.YEAR)) * 12 + (c1.get(Calendar.MONTH) - c2.get(Calendar.MONTH));
} else if (dateType.equalsIgnoreCase("HH")) { //$NON-NLS-1$
return (date1.getTime() - date2.getTime()) / (1000 * 60 * 60);
} else if (dateType.equals("mm")) { //$NON-NLS-1$
return (date1.getTime() - date2.getTime()) / (1000 * 60);
} else if (dateType.equalsIgnoreCase("ss")) { //$NON-NLS-1$
return (date1.getTime() - date2.getTime()) / 1000;
} else if (dateType.equalsIgnoreCase("SSS")) { //$NON-NLS-1$
return date1.getTime() - date2.getTime();
} else if (dateType.equalsIgnoreCase("dd")) {
return (date1.getTime() - date2.getTime()) / (1000 * 60 * 60 * 24);
} else {
throw new RuntimeException("Can't support the dateType: " + dateType);
}
} |
Partager