public class CalcCurrentMonth {
public Map<String, Date> getHalfMonthDate(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.MONTH, 0);
calendar.set(Calendar.DAY_OF_MONTH, 1);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
Date firDateFoMonth = calendar.getTime();
calendar.add(Calendar.MONTH, 0);
calendar.set(Calendar.DAY_OF_MONTH, 15);
calendar.set(Calendar.HOUR_OF_DAY, 23);
calendar.set(Calendar.MINUTE, 59);
calendar.set(Calendar.SECOND, 59);
Date halfFirDateFoMonth = calendar.getTime();
calendar.add(Calendar.MONTH, 0);
calendar.set(Calendar.DAY_OF_MONTH, 16);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE,0);
calendar.set(Calendar.SECOND,0);
Date halfLastDateFoMonth = calendar.getTime();
calendar.add(Calendar.MONTH, 1);
calendar.set(Calendar.DAY_OF_MONTH, 0);
calendar.set(Calendar.HOUR_OF_DAY,23);
calendar.set(Calendar.MINUTE, 59);
calendar.set(Calendar.SECOND,59);
Date lastDateFoMonth= calendar.getTime();
Map<String, Date> map = new HashMap<String, Date>();
map.put(PublicCommon.HALF_FIRST_DAY_OF_MONTH,halfFirDateFoMonth);
map.put(PublicCommon.HALF_LAST_DAY_OF_MONTH,halfLastDateFoMonth);
map.put(PublicCommon.FIRST_DAY_OF_MONTH, firDateFoMonth);
map.put(PublicCommon.LAST_DAY_OF_MONTH, lastDateFoMonth);
return map;
}
}
通过上述方法,计算出来的Date类型的时间,直接传入hibernate
hql
SELECT p FROM p WHERE p.createTime BETWEEN ? AND ?
经过测试之后不能包含边界值。
解决方法:
在经calendar计算完时间之后,将其格式化之后 再作为参数 传入hql中,此时,经过测试包含边界值。