如何获得当前日期和其他日期(java.util.Date)之间的差异年的Java如何获得当前日期和其他日期(java.util.Date)之间的差异年的Java
我有传入的java.util.Date对象,我需要知道它们之间有多少年。
我试过乔达的时间段,但我必须创建乔达的时间对象。有没有其他方法来计算这种差异。获得毫米并试图将其转化为年的方式不计算闰年。
如何获得当前日期和其他日期(java.util.Date)之间的差异年的Java如何获得当前日期和其他日期(java.util.Date)之间的差异年的Java
我有传入的java.util.Date对象,我需要知道它们之间有多少年。
我试过乔达的时间段,但我必须创建乔达的时间对象。有没有其他方法来计算这种差异。获得毫米并试图将其转化为年的方式不计算闰年。
由于Date
类中的大多数方法都已弃用,因此可以使用java.util.Calendar。
Calendar firstCalendar = Calendar.getInstance();
firstCalendar.setTime(firstDate); //set the time as the first java.util.Date
Calendar secondCalendar = Calender.getInstance();
secondCalendar.setTime(secondDate); //set the time as the second java.util.Date
int year = Calendar.YEAR;
int month = Calendar.MONTH;
int difference = secondCalendar.get(year) - firstCalendar.get(year);
if (difference > 0 &&
(secondCalendar.get(month) < firstCalendar.get(month))) {
difference--;
}
随着if
声明我检查,如果我们有像日期和June, 2011
March, 2012
(为其全年的区别是0)。当然,我假设secondDate
是后firstDate
。
更新,感谢您的注意。 :) –
我推荐使用joda。
DateTime start = new DateTime(a);
DateTime end = new DateTime(b);
difference = Years.yearsBetween(start, end).getYears();
转换一个java.util.Date到org.joda.time.DateTime对象是微不足道的,因为日期时间有这样的构造:
DateTime jodaTime = new DateTime(javaDate);
然后,您可以通过这些来org.joda.time.Period和调用的结果getYears()来获得这两个日期之间的全年数:
public int getYearDifference (Date begin, Date end) {
return new Period(new DateTime(begin), new DateTime(end)).getYears();
}
从JDK 8开始,您可以获得两个日期之间的持续时间。更好的是,一些ChronoUnits,就像你所要求的一样。
Instant t1, t2;
...
long years = ChronoUnit.YEARS.between(t1, t2);
忘记日期,第三方罐子(乔达时间很酷,但让我们以标准方式来做)和日历。 JDK 8是未来。
拥抱它! http://docs.oracle.com/javase/tutorial/datetime/iso/period.html
你究竟如何计算闰年? – Philipp
我的问题不涉及scala或如何转换为乔达时间 –