【问题标题】:How to get difference between current date and other date ( java.util.Date) in years in Java [duplicate]如何在Java中获取当前日期和其他日期(java.util.Date)之间的差异[重复]
【发布时间】:2014-01-21 15:31:23
【问题描述】:

如何在 Java 中获取当前日期和其他日期 (java.util.Date) 之间的年差

我有传入的 java.util.Date 对象,我需要获取它们之间的整整年数。

我尝试了 Joda 的时间周期,但我必须创建 joda 的时间对象。有没有其他方法来计算这个差异。获取毫秒并尝试将其转换为年的方法不计算闰年。

【问题讨论】:

  • 您希望闰年如何计算?
  • 我的问题与 scala 或如何转换为 Joda Time 无关

标签: java date


【解决方案1】:

由于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, 2011March, 2012 的日期(全年差异为0)。当然,我假设secondDatefirstDate之后。

【讨论】:

  • 已更新,感谢您的注意。 :)
【解决方案2】:

从 JDK 8 开始,您可以获得 2 个日期之间的 Duration。更好的是,一些 ChronoUnits,如年,如您所愿。

Instant t1, t2;
...
long years = ChronoUnit.YEARS.between(t1, t2);

忘记日期、第 3 方罐子(Joda Time 很酷,但让我们以标准方式来做)和日历。 JDK 8 是未来。

拥抱它! http://docs.oracle.com/javase/tutorial/datetime/iso/period.html

【讨论】:

    【解决方案3】:

    我建议使用 joda。

    DateTime start = new DateTime(a);  
    DateTime end = new DateTime(b); 
    difference = Years.yearsBetween(start, end).getYears();
    

    【讨论】:

      【解决方案4】:

      java.util.Date 转换为 org.joda.time.DateTime 对象很简单,因为 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();  
       }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-04-24
        • 2023-03-24
        • 2019-02-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多