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

2022-09-01 10:38:23

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

所有这些都非常简单,使用构造函数工作正常。当然,该构造函数已弃用,并且我想避免在我正在编写的新代码中使用折旧调用。然而,解决这个简单问题的所有其他选择似乎都非常复杂。真的没有简单的方法可以在不使用折旧构造函数的情况下做我想做的事情吗?java.util.Date(int year,int month,int day)

我知道所有与Java日期相关的问题的标准答案是“使用joda时间”,但我真的不想为这样一个看似微不足道的问题开始拉入第三方库。


答案 1

这个想法是使用日历类,如下所示:

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 :-)。


答案 2

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

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