我正在尝试做一些非常简单的事情,但是开始意识到Java中的日期有点像雷区。我想要的是通过三个整数组(一年,一个月和一个日期)来创建一些Date
个对象,对它们进行一些简单的测试(在日期B之前和之后的日期A行) 1 1990),将它们转换为java.sql.Date
对象,并通过JDBC将它们传递给数据库。
使用java.util.Date(int year,int month,int day)
构造函数,一切都非常简单并且工作正常。当然这个构造函数是折旧的,我想避免在我写的新代码中使用折旧调用。然而,解决这个简单问题的所有其他选项似乎都很愚蠢。如果不使用折旧的构造函数,真的没有简单的方法可以做我想要的吗?
我知道所有Java日期相关问题的标准答案是“使用joda时间”,但我真的不想开始在第三方库中找到这样一个看似微不足道的问题。
答案 0 :(得分:41)
我的想法是使用Calendar
类,如下所示:
Calendar cal = Calendar.getInstance();
cal.set(year, month, date);
Date date = cal.getTime();
的确,如果你查看你提到的constructor的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: - )。
答案 1 :(得分:4)
好吧,您可以使用已弃用的构造函数。它已被弃用超过13年,仍然有效 - 它不会去任何地方。如果您不想这样做而又不想使用第三方库,则必须使用日历。
在Java 7中,希望会有一个新的时间API,您将不再需要第三方API。
答案 2 :(得分:1)
LG的回答是有效的,但一般情况下,您应该使用Calendar
进行所有日期操作,并将Date
保留在其中,除非您的API明确要求。在这种情况下,您可以在将其传递给API时进行转换。