最近,需要做一个包期和优惠券业务,这就涉及到计算业务时长,这里只是简单的写一个计算业务时间的工具类,广大猿友们自己注意,下面的代码可以直接用,哈哈,分享一下:
/**
* @Description: 根据传入的时间返回包期开始时间
* @
* @date 2017年10月27日 上午11:02:44
* @param lastEndDate
* @return
*/
public static Date getBagStartDateTime(Date lastEndDate){
Date sDate=null;
try {
Date nowDateTime=getSetDate(new Date(),0);//即今天的00:00:00 000
Date lastDateTime=getSetDate(lastEndDate,0);//用天来做判断,获取某天的00:00:00 000
Calendar tomDateTime=getBeginTimeCalendar(getSetCalendarDay(Calendar.getInstance(), 1));//即明天的00:00:00 000
Calendar furDateTime=getBeginTimeCalendar(getSetCalendarDay(convertDateToCalendar(lastDateTime), 1));//即今天后的某一天后的后天的00:00:00 000
if((lastDateTime).compareTo(nowDateTime)==1){//如果lastEndDate>今天,startDate=lastEndDate+1零点零分零秒
sDate= furDateTime.getTime();
}else if((lastDateTime).compareTo(nowDateTime)==-1){//如果lastEndDate<今天, startDate=今天零点零分零秒
sDate= nowDateTime;
}else if((lastDateTime).compareTo(nowDateTime)==0){//如果lastEndDate=今天,startDate=明天零点零分零秒
sDate= tomDateTime.getTime();
}
} catch (Exception e) {
logger.error("DateUtil::getBagStartDateTime::包期开始时间日期计算异常", e);
}
return sDate;
}
/**
* @Description: 根据包期开始时间计算包期结束时间
* @author
* @date 2017年10月28日 下午3:28:36
* @param bagStartDate
* @param d
* @param m
* @return
*/
public static Date getBagEndDateTime(Date bagStartDate,int d,Short m){
Calendar ca= new GregorianCalendar();
Date dateTime=getSetDate(bagStartDate,0);;//即某天的00:00:00 000
ca.setTime(dateTime);
ca.add(Calendar.MONTH,m);//月份加m,得到ca对象的月份+m个月后的月份
ca.add(Calendar.DATE, d);
ca=getEndTimeCalendar(ca);
return ca.getTime();
}
/**
* @Description: 返回清空时间的日期
* @author
* @date 2017年10月27日 下午2:32:54
* @param d
* @return
*/
public static Date getSetDate(Date dt,int da){
Calendar calendar = new GregorianCalendar();
calendar.setTime(dt);
calendar.add(Calendar.DATE, da); // 将日期中日设为可变化的
calendar.set(Calendar.HOUR_OF_DAY, 0); // 将日期中时设为零
calendar.set(Calendar.MINUTE, 0); // 将日期中分设为零
calendar.set(Calendar.SECOND, 0); // 将日期中秒设为零
calendar.set(Calendar.MILLISECOND, 0); // 将日期中毫秒设为零
return calendar.getTime();
}
/**
* 取指定日期的零点时间
* @author
* @param calendar 日期对象
* @return 某年某月某日零点的日期对象
*/
public static Calendar getBeginTimeCalendar(Calendar calendar) {
calendar.set(Calendar.HOUR_OF_DAY, 0); // 将日期中时设为零
calendar.set(Calendar.MINUTE, 0); // 将日期中分设为零
calendar.set(Calendar.SECOND, 0); // 将日期中秒设为零
calendar.set(Calendar.MILLISECOND, 0); // 将日期中毫秒设为零
return calendar;
}
/**
* 取指定日期的结束时间
* @author
* @param calendar 日期对象
* @return 某年某月某日
*/
public static Calendar getEndTimeCalendar(Calendar calendar) {
calendar.set(Calendar.HOUR_OF_DAY, 23); // 将日期中时设为23
calendar.set(Calendar.MINUTE, 59); // 将日期中分设为59
calendar.set(Calendar.SECOND, 59); // 将日期中秒设为59
calendar.set(Calendar.MILLISECOND, 999);// 将日期中毫秒设为999
return calendar;
}
/**
* @Description: 获取Calendar日期数据的某一天
* @author
* @date 2017-8-30 下午7:33:27
* @param ca
* @param d
* @return
*/
public static Calendar getSetCalendarDay(Calendar ca,int d){
ca.add(Calendar.DATE, d);
return ca;
}
/**
* 日期对象相互转换
* @author
* @param date Date日期对象
* @return 日期对象
*/
public static Calendar convertDateToCalendar(Date date) {
Calendar calendar = new GregorianCalendar();
calendar.setTime(date);
return calendar;
}
如有遗漏,请联系我,哈哈,分享给大家!