San*_*and 5 java java.util.date
目前我正在使用已弃用的set方法java.util.Date.由于我想远离它,有什么替代方案,它们有什么优势?
我需要Date设置一个今天,午夜的时间HQL查询,选择今天发生的所有事情.
目前我使用:
Date startingDate = new Date();
startingDate.setHours(0);
startingDate.setMinutes(0);
startingDate.setSeconds(0);
Run Code Online (Sandbox Code Playgroud)
注意:对于Java 8及更高版本,这个答案很可能不再准确,有一个更好的日期/日历API.
标准备用是使用 Calendar Object.
Calendar cal = Calendar.getInstance(); // that is NOW for the timezone configured on the computer.
cal.set(Calendar.HOUR, 0);
cal.set(Calendar.MINUTES, 0);
cal.set(Calendar.SECONDS, 0);
Date startingDate = cal.getTime();
Run Code Online (Sandbox Code Playgroud)
Calendar有没有其他库的优点,并被广泛理解.这也是从所记录替代的Javadoc的Date
文档Calendar可以在这里找到:Javadoc
Calendar有一个危险点(对于粗心的人),这就是after/ before方法.他们接受Object但只会处理Calendar正确对象.在使用它们之前,请务必仔细阅读这些方法的Javadoc.
您可以通过Calendar某种方式转换对象,例如添加day(cal.add(Calendar.DAY_OF_YEAR, 1);)或"滚动"整周(cal.roll(Calendar.DAY_OF_WEEK, 1);)等.阅读Javadoc中的类描述以获得完整的图片.