Java 如何检查日期是否超过30天?

Java 如何检查日期是否超过30天?,java,date,jodatime,Java,Date,Jodatime,我有一个java.util.Date,我需要检查它是否超过30天。最好的检查方法是什么 for(Date date: listOfDates) { // how to check this date to see whether it is more than 30 days limit if(checkDateLimit()) { } } 我在Java 7上。这取决于你对“30天”的定义有多正式。如果你只想知道给定的日期(在Java中,包括毫秒以下的时间)是否有30天(毫秒)的

我有一个
java.util.Date
,我需要检查它是否超过30天。最好的检查方法是什么

for(Date date: listOfDates) {
  // how to check this date to see whether it is more than 30 days limit
  if(checkDateLimit()) {

  }
}

我在Java 7上。

这取决于你对“30天”的定义有多正式。如果你只想知道给定的日期(在Java中,包括毫秒以下的时间)是否有30天(毫秒)的时间,然后,您可以计算30天内有多少毫秒,并查看当前日期是否大于给定日期的毫秒数

日期通过getTime()显示其毫秒值

private boolean older超过30天(指定日期)
{
long currentMillis=new Date().getTime();
长毫秒30天=30*24*60*60*1000;
布尔结果=givenDate.getTime()<(当前毫秒-毫秒30天);
返回结果;
}

如果可以使用Java 8,则可以执行以下操作:

boolean checkDateLimit(Date date) {
    // convert Date into Java 8 LocalDate
    LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
    LocalDate today = LocalDate.now();
    // count number of days between the given date and today
    long days = ChronoUnit.DAYS.between(localDate, today);
    return days > 30;
}

按照其他人的建议,您应该使用JodaTime:

  private static boolean olderThan30Days(Date givenDate) {
    boolean result =
        Days.daysBetween(new DateTime(givenDate), new DateTime()).isGreaterThan(Days.days(30));
    return result;
  }

只需删除第5行给定数据处的括号。变量不需要这样。不过我觉得不错。谢谢edited.BTW,我的日期格式如下
Thu Jun 02 12:43:44 PDT 2016
。我没有看到这个方法
getTimeMillis()
?我会使用
System.currentTimeMillis()
,而不是
new Date().getTimeMillis()
。无论如何,如果从一个long中减去另一个并将结果与第三个进行比较会让你感到困惑,然后引入一个新的库来执行此操作。您可以使用类似于计算过去30天的日期,然后确定指定的日期是在itgetTime()之前还是之后,这将有助于您在进行少量计算的情况下比较日期。@david请在发布前搜索堆栈溢出。仍然使用Java 7.:(@david Use JodaTime,很相似,对吧,Java 8日期/时间API基本上是基于JodaTime的,所以如果你能使用JodaTime,结果应该非常相似。@earangol如果可能的话,你能提供一个关于JodaTime的例子吗?
  private static boolean olderThan30Days(Date givenDate) {
    boolean result =
        Days.daysBetween(new DateTime(givenDate), new DateTime()).isGreaterThan(Days.days(30));
    return result;
  }