2012-08-14 77 views
0

可能重复:
How do you subtract Dates in Java?日期减法在Java

我创建Java桌面应用程序。在那个应用程序中,用户输入一些日期。所以我使用3party库“jCalendar.jar”。为了验证我想减去两个日期。有什么办法可以在减去java中的两个日期吗?

+4

http://joda-time.sourceforge.net/ – Jesper 2012-08-14 14:41:57

+2

你应该看看JodaTime:http://joda-time.sourceforge.net/,也在这个问题:http://stackoverflow.com/questions/ 3526485 /你怎么减去日期在java – 2012-08-14 14:42:29

回答

2

如果您在使用Java日期或Java日历,那么你可以使用类似:

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

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

编辑: 正如指出的意见,存储在日历中的结果将没有多大意义。您仍然可以使用为您的操作返回的毫秒数。

如果可能的话,你也可以使用库来处理这个问题,比如JODA

它可以让你从两个日期和更多的东西之间得到seconds/minutes/days/months/etc数量。

+0

这有点奇怪。假设我从2012年8月13日15:41减去2012年8月5日12:34,并将结果放入“日历”中。你预计什么日期“Calendar”被设置?减去两个日期的结果是一段时间,而不是一段时间。 '日历'不适合持有一定的时间。 – Jesper 2012-08-15 09:51:25

+0

你说的对,虽然有点奇怪,但是在那一刻我仍然可以以不同的方式使用毫秒,而不是在日历上设置。 – Josejulio 2012-08-15 15:34:06

+0

这有助于我的工作。谢谢! – Tung 2016-10-14 16:35:34

2

我建议看看Joda Time,它是Java中日期处理的实际标准。给定两个java.util.DatesjavaDate1javaDate2

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

Period diff = new Period(d1, d2); 

现在,您可以查询diff对象的不同,分成它的组成成分(年,月,日等)。有关更多信息,请参阅乔达时间period guide

4

Java不给力,你可以看看开源:试试JODA

DateTime dt1 = new DateTime(2000, 1, 1, 0, 0, 0, 0); 
DateTime dt2 = new DateTime(2010, 1, 1, 0, 0, 0, 0); 
int noOfdays = Days.daysBetween(dt1, dt2).getDays(); 
0

您可以使用java.util.GregorianCalendar

创建这个类的一个实例,然后调用时刻设定()方法来设置你的约会。最后使用这个类的方法。