有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在Java中,如何确定两个日历对象之间经过的时间?

在java中,计算两个日历日期之间的时间量的最佳方法是什么。我正在编写一个方法,确定两个日期之间经过的月数,并根据预定义的月数返回一个布尔值。这是我的代码(工作不正常)

这段代码总是返回false。此外,该代码不考虑过去的天数。如果开始日期在月末,这可能会是一个问题。难道没有一个简单的比较方法吗

private boolean hasMatured()
{
    Calendar now = Calendar.getInstance();

    Calendar start = (Calendar) super.dateOpened.clone();

    int nowYear = now.get(Calendar.YEAR);
    int nowMonth = now.get(Calendar.MONTH);

    int startYear = start.get(Calendar.YEAR);
    int startMonth = start.get(Calendar.MONTH);

    int monthsElapsed = (nowYear - startYear) * 12 + (nowMonth - startMonth);

    return monthsElapsed>PERIOD_IN_MONTHS;
}

共 (2) 个答案

  1. # 1 楼答案

    我错过什么了吗?日历中有一个compareTo()以及其他有用的东西

    那么:

    Calendar now = Calendar.getInstance();

    now.add(Calendar.MONTH, -PERIOD_IN_MONTHS);

    return super.dateOpened.before(now);

    从今天减去X个月,看看开始日期是否仍在该日期之前。如果是,那么X个月一定已经过去了

  2. # 2 楼答案

    我强烈推荐Joda Time用于Java中所有与日期相关的内容。它有一个更干净、更直观的API,以及日期间隔等概念