java.util.Date的替代方案

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)

Ang*_*chs 8

注意:对于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有没有其他库的优点,并被广泛理解.这也是从所记录替代的JavadocDate

文档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中的类描述以获得完整的图片.

  • 其中的`#set`方法:http://docs.oracle.com/javase/7/docs/api/java/util/Calendar.html#set(int,int,int,int,int,int) (2认同)