需求:当前日期 00:00:00 至 23:59:59
方案1:
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.MILLISECOND,0); // 重点注意,下面有描述
Date dtStart = calendar.getTime();
calendar.set(Calendar.HOUR_OF_DAY, calendar.getActualMaximum(Calendar.HOUR_OF_DAY));
calendar.set(Calendar.SECOND, calendar.getActualMaximum(Calendar.SECOND));
calendar.set(Calendar.MINUTE, calendar.getActualMaximum(Calendar.MINUTE));
Date dtEnd = calendar.getTime();
方案2:
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String currentDate = df.format(new Date()).substring(0, 10);
try {
Date dtStart = df.parse(currentDate+ " 00:00:00");
Date dtEnd = df.parse(currentDate + " 23:59:59");
}catch (ParseException e) {
e.printStackTrace();
}
遇到的问题:
方案1中如果不设置毫秒值时,在mybatis的between操作时,会导致无法抽取边界值。
可以使用dtStart.getTime(),观察它的long值。会发现同方案2的值是不相同的。