Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
替换java.util.Date(年、月、日)的公认方法是什么_Java_Date_Calendar - Fatal编程技术网

替换java.util.Date(年、月、日)的公认方法是什么

替换java.util.Date(年、月、日)的公认方法是什么,java,date,calendar,Java,Date,Calendar,我试图做一些非常简单的事情,但我开始意识到Java中的日期有点雷区。我只想通过三个int(一年、一个月和一个日期)的组,创建一些date对象,对它们进行一些简单的测试(按照日期a在日期B之前和1990年1月1日之后的顺序),将它们转换成java.sql.date对象,并通过JDBC将它们传递到数据库 所有这些都非常简单,使用java.util.Date(int year,int month,int day)构造函数可以很好地工作。当然,构造函数是折旧的,我希望避免在我正在编写的新代码中使用折旧调

我试图做一些非常简单的事情,但我开始意识到Java中的日期有点雷区。我只想通过三个int(一年、一个月和一个日期)的组,创建一些
date
对象,对它们进行一些简单的测试(按照日期a在日期B之前和1990年1月1日之后的顺序),将它们转换成
java.sql.date
对象,并通过JDBC将它们传递到数据库

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

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

我们的想法是使用该类,如下所示:

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时对其进行转换

这是日历中的一个陷阱-使用此代码不会得到相同的结果,因为日历将使用此代码保留其时间组件。您必须直接使用GregorianCalendar构造函数来避免时间问题,或者显式清除所有时间字段。不是Java 7,而是Java 8有一个新的时间API: