1.时期格式化
public static final String dateTimeFormat = new String("yyyy-MM-dd HH:mm:ss");
public static String getDateString(Date date, String formatString) {
try {
return (date != null) ? new SimpleDateFormat(formatString).format(date) : "";
} catch (Throwable e) {
e.printStackTrace();
return null;
}
}
2.
GregorianCalendar
GregorianCalendar
是 Calendar
的一个具体子类,提供了世界上大多数国家/地区使用的标准日历系统。
GregorianCalendar
是一种混合日历,在单一间断性的支持下同时支持儒略历和格里高利历系统,在默认情况下,它对应格里高利日历创立时的格里高利历日期(某些国家/地区是在 1582 年 10 月 15 日创立,在其他国家/地区要晚一些)。详细内容查看JDK
2.1 获取给定日期当日的00:00:00时间戳,即去除日期中含有的时间数据
public static Date getDateIgnoreTime(Date date) {
GregorianCalendar gday = new GregorianCalendar();
gday.setTime(date);
gday.set(Calendar.HOUR, 0);
gday.set(Calendar.HOUR_OF_DAY, 0);
gday.set(Calendar.MINUTE, 0);
gday.set(Calendar.SECOND, 0);
gday.set(Calendar.MILLISECOND, 0);
return gday.getTime();
}
2.2 根据天数偏移量计算日期
public static Date getDateAfter(Date date, int days) {
GregorianCalendar calendar = new GregorianCalendar();
calendar.setTime(date);
calendar.add(GregorianCalendar.DATE, days);
return calendar.getTime();
}
2.3 计算两个日期间间隔的天数
public static final long M_PER_DAY = 1000 * 60 * 60 * 24;
public static Long computeDateInterval(Date startDate, Date endDate) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(startDate);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
long startTime = calendar.getTimeInMillis();
calendar.setTime(endDate);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
long endTime = calendar.getTimeInMillis();
return (endTime - startTime) / M_PER_DAY;
}
2.4 校验日期格式是否正确
public static boolean checkDateValidity(String str, String formatString) {
SimpleDateFormat sdf = new SimpleDateFormat(formatString);
sdf.setLenient(false);
try {
sdf.parse(str);
return true;
} catch (ParseException e) {
return false;
}
}
2.5 校验某日是否在一段日期区间中
/**
* 校验某日是否在一段日期区间中
*
* @param CompareDate
* 待比较日期
* @param date1
* 前置日期
* @param date2
* 后置日期
* @return
*/
public static boolean isBetween(Date CompareDate, Date date1, Date date2) {
if (date2.before(date1)) {
Date tmp = date1;
date1 = date2;
date2 = tmp;
}
return !(CompareDate.before(date1) || CompareDate.after(date2));
}
2.6 日期比较函数
/**
* 日期比较函数
*
* @param date1
* @param date2
* @return 比较两个日期的先后, date1>date2返回1, date1==date2返回0, date1<date2返回-1,
* date1,date2数据错误返回-2 Modification History:
*/
public static int compareDate(Date date1, Date date2) {
if (date1 == null || date2 == null)
return -2;
long temp = java.util.TimeZone.getDefault().getRawOffset();
long result = (date2.getTime() + temp) / M_PER_DAY - (date1.getTime() + temp) / M_PER_DAY;
if (result > 0) {
return -1;
} else if (result < 0) {
return 1;
} else {
return 0;
}
}