因此,对于作业,我们必须使用 JDK Date 或 Calendar 对象来表示我们正在设计的系统中的日期(否则我将使用另一个库)。对于一个函数,我需要确保从输入日期到当前日期至少已经过去了一定的年数。我编写了以下方法来尝试计算两个 Calendar 对象之间的天数:
public static int daysSince(Calendar pastDate) {
Calendar presentDate = Calendar.getInstance();
int daysSince = 0;
while (pastDate.before(presentDate)) {
pastDate.add(Calendar.DAY_OF_MONTH, 1);
daysSince++;
} return daysSince;
}
但是,此方法返回的结果似乎总是比两个日期之间的实际天数少 30 天,我似乎不明白为什么?例如,它说 3/25/2016 和 4/25/2016 之间只有一天。我错过了什么?
最佳答案
您的代码大部分都可以工作( proof )。我怀疑你的测试数据有问题。
For example, it says there is only one day between 3/25/2016 and 4/25/2016.
我怀疑您错误地创建了测试日期 (3/25/2016)。请记住,MONTH
值以 0 开头,因此要创建 3/25/2016,您需要:
past.set(Calendar.DAY_OF_MONTH, 25);
past.set(Calendar.MONTH, 2); // NOTE THE 2
past.set(Calendar.YEAR, 2016);
我怀疑您在需要 2
的地方使用了 3
,而您看到的这一天是因为您的测试日期是午夜,而您当前的日期不是。
除此之外,您可能希望更好地处理时间,该代码可以工作。
关于java - 计算 Java 中两个日期或日历对象之间的天数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36837338/