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

时间:2016-06-02 20:11:35

标签: java date jodatime

我有一个:fs.start_link(:fs_watcher, '/users/ocaten~1'),我需要检查它是否超过30天。检查出来的最佳方法是什么?

java.util.Date

我在Java 7上。

3 个答案:

答案 0 :(得分:4)

这取决于你想要了解" 30天的定义。"如果您只想知道给定日期(在Java中,包括时间到毫秒)是30天(到毫秒)旧,那么您可以计算30天内有多少毫秒,看看是否当前日期大于给定日期的毫秒数。

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

private boolean olderThan30Days(Date givenDate)
{
  long currentMillis = new Date().getTime();
  long millisIn30Days = 30 * 24 * 60 * 60 * 1000;
  boolean result = givenDate.getTime() < (currentMillis - millisIn30Days);
  return result;
}

答案 1 :(得分:3)

根据其他人的建议,您应该使用JodaTime:

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

答案 2 :(得分:2)

如果您可以使用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;
}