java中的日期减法

java中的日期减法,java,date,Java,Date,可能重复: 我正在创建java桌面应用程序。在该应用程序中,用户提供一些日期输入。所以我使用3party库“jCalendar.jar”。为了验证,我想减去两个日期。在java中有没有办法减去两个日期?我建议看一看java中日期处理的事实标准。给定两个java.util.Dates,javaDate1和javaDate2: DateTime d1 = new DateTime(javaDate1); DateTime d2 = new DateTime(javaDate2); Period

可能重复:


我正在创建java桌面应用程序。在该应用程序中,用户提供一些日期输入。所以我使用3party库“jCalendar.jar”。为了验证,我想减去两个日期。在java中有没有办法减去两个日期?

我建议看一看java中日期处理的事实标准。给定两个
java.util.Dates
javaDate1
javaDate2

DateTime d1 = new DateTime(javaDate1);
DateTime d2 = new DateTime(javaDate2);

Period diff = new Period(d1, d2);

现在,您可以查询
diff
对象中的差异,并将其分解为其组成部分(年、月、日等)。有关更多信息,请参阅Joda Time。

Java提供的信息不多,您可以查看开源:试试

你可以用


创建此类的实例,然后调用setTime()方法来设置日期。最后使用这个类的方法。

如果您使用的是Java日期或Java日历,那么您可以使用如下内容:

Calendar firstOperand = new GregorianCalendar();
Calendar secondOperand = new GregorianCalendar();
Calendar result = new GregorianCalendar();

result.setTimeInMillis(firstOperand.getTimeInMillis() - secondOperand.getTimeInMillis());
编辑: 正如评论中指出的,将结果存储在日历中没有多大意义。您仍然可以使用为操作返回的毫秒数

如果可能,您也可以使用库来处理此问题,如


它允许您从两个日期之间获取///的数量和更多信息。

您应该查看JodaTime:还有这个问题:这有点奇怪。假设我从2012年8月13日15:41减去2012年8月5日12:34,并将结果放入
日历中。您希望日历设置在什么日期?减去两个日期的结果是一个时间量,而不是一个瞬间<代码>日历
不适合保存一定的时间。你是对的,秒虽然有点奇怪,但这是我当时的想法,他仍然可以以不同的方式使用毫秒,而不是在日历上设置。这有助于我的工作。谢谢
Calendar firstOperand = new GregorianCalendar();
Calendar secondOperand = new GregorianCalendar();
Calendar result = new GregorianCalendar();

result.setTimeInMillis(firstOperand.getTimeInMillis() - secondOperand.getTimeInMillis());