下面的代码是查询某两个日期间的记录
public int countTodayLogin(){
// return (Integer)createQuery("select count(*) from User where lastLoginTime between ? and ?")
// .setDate(0, this.getStartOfToday())
// .setDate(1, this.getEndOfToday())
// .setCacheable(true)
// .uniqueResult();
return (Integer)createCriteria()
.add(Restrictions.between("lastLoginTime",getStartOfToday(),getEndOfToday()))
.setProjection(Projections.count("id"))
.uniqueResult();
}
不知道为什么 第一种方法就是查不出结果来 (注掉的代码)
另外下面两个方法是获取一天的开始和结束时间
感觉写的挺麻烦的 不知道有没有更简单的方法
private Date getStartOfToday(){
Calendar today = Calendar.getInstance();
int year = today.get(Calendar.YEAR);
int month = today.get(Calendar.MONTH);
int day = today.get(Calendar.DAY_OF_MONTH);
return new GregorianCalendar(year, month, day, 0, 0, 0).getTime();
}
private Date getEndOfToday(){
Calendar today = Calendar.getInstance();
int year = today.get(Calendar.YEAR);
int month = today.get(Calendar.MONTH);
int day = today.get(Calendar.DAY_OF_MONTH);
return new GregorianCalendar(year, month, day, 23, 59, 59).getTime();
}
还有一点就是SimpleDateFormat格式化时要注意的问题: HH大些输出24小时格式 hh小写是12小时
下班了 撤退!
在使用SimpleDateFormat时格式化时间的 yyyy.MM.dd 为年月日而如果希望格式化时间为12小时制的,则使用hh:mm:ss 如果希望格式化时间为24小时制的,则使用HH:mm:ss