java - 计算 Java 中两个日期或日历对象之间的天数

标签 java date calendar difference

因此,对于作业,我们必须使用 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/

相关文章:

Java Multipart/post 下载

PHP Julian 日期转换器算法

Java:获取当前的星期几值

java - 使用PDFBox后的编码问题

java - NetBeans 的启动画面功能如何工作?

java - Android解析Json给出空字符串

php - strtotime 函数返回 01/01/70 且输入有效

PHP Mysql查询获取特定日期范围内所有星期一的时间范围并将这些不同的开始和结束时间放入数据库中

php - 查看某个时间段是否与当前时间匹配

ios - 当我们的应用程序在 iPad 中打开时,我们可以禁用日历事件通知弹出窗口吗?