替换java.util.Date(year,month,day)的公认方法是什么


问题内容

我正在尝试做一些非常简单的事情,但是开始意识到Java中的日期有点雷区。我想要的是让三个整数(一年,一个月和一个日期)通过的组创建一些Date对象,对其进行一些简单的测试(沿着日期B之前的日期A和1990年1月1日之后的行A)将它们java.sql.Date传递给对象,然后通过JDBC将其传递给数据库。

一切都非常简单,并且可以使用java.util.Date(int year,int month,int day)构造函数正常运行。当然,该构造函数已弃用,我想避免在正在编写的新代码中使用已弃用的调用。但是,解决这个简单问题的所有其他选择似乎都非常复杂。如果不使用折旧的构造函数,真的有没有简单的方法可以执行我想要的操作?

我知道所有与Java日期有关的问题的标准答案都是“使用joda时间”,但是我真的不想开始针对此类看似微不足道的问题引入第三方库。


问题答案:

想法是使用Calendar类,如下所示:

Calendar cal = Calendar.getInstance();
cal.set(year, month, date);
Date date = cal.getTime();

的确,如果您检查所提到的构造函数的Javadoc
,则完全是建议的内容:

Date(int year, int month, int date)
          Deprecated. As of JDK version 1.1, replaced by Calendar.set(year + 1900, month, date) or GregorianCalendar(year + 1900, month, date).

或者…使用JodaTime :-)。