替换java.util.Date(年,月,日)的可接受方式是什么

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

使用java.util.Date(int year,int month,int day)构造函数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 :-)。

好吧,你可以使用不推荐使用的构造函数。 它已被弃用超过13年,仍然有效 – 它不会去任何地方。 如果您不想这样做并且不想使用第三方库,则必须使用日历。

在Java 7中,希望会有一个新的时间API,您将不再需要第三方API。

LG的答案是有效的,但一般情况下,您应该使用Calendar进行所有日期操作,并将Date保留在其中,除非您的API明确要求。 在这种情况下,您可以在将其传递给API时进行转换。