java - 在java中计算两个日期之间的天数

标签 java date datetime

<分区>

我需要计算两个日期之间的天数,我正在使用以下代码。问题是它返回我 2 但实际上它应该返回 3 因为 2016 年 6 月 30 日到 6 月 27 日之间的差异是 3。你能帮忙在哪里应该包括当前日期以及差异吗?

public static long getNoOfDaysBtwnDates(String expiryDate) {
    SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
    Date expDate = null;
    long diff = 0;
    long noOfDays = 0;
    try {

        expDate = formatter.parse(expiryDate);
        //logger.info("Expiry Date is " + expDate);
       // logger.info(formatter.format(expDate));

        Date createdDate = new Date();
        diff = expDate.getTime() - createdDate.getTime();
        noOfDays = TimeUnit.DAYS.convert(diff, TimeUnit.MILLISECONDS);
        long a = TimeUnit.DAYS.toDays(noOfDays);
       // logger.info("No of Day after difference are - " + TimeUnit.DAYS.convert(diff, TimeUnit.MILLISECONDS));
        System.out.println(a);
        System.out.println(noOfDays);

    } catch (ParseException e) {
        e.printStackTrace();
    }

    return noOfDays;
}

截止日期为 2016-06-30,当前日期为 2016-06-27

最佳答案

原因是,您没有减去具有相同时间格式的两个日期。

使用 Calendar 类将两个日期的时间更改为 00:00:00,您将得到准确的天数差异。

Date createdDate = new Date();
Calendar time  = Calendar.getInstance();
time.set(Calendar.HOUR_OF_DAY, 0);
time.set(Calendar.MINUTE, 0);
time.set(Calendar.SECOND, 0);
time.set(Calendar.MILLISECOND, 0);
createdDate = time.getTime();

Jim Garrison 的更多解释 answer

关于java - 在java中计算两个日期之间的天数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38046951/

相关文章:

java - 函数参数不兼容

javascript - 缺少时区的日期解析不一致

php - php/mysql 日期减去 1 年

python - Python 中的夏令时

java - 如何在 Spring 5 MVC 中将 FilePart 转换为 byte[]

java - 通过 Java Web Start (JNLP) 启动的小程序启动两次

java - 使用 PostgreSQL 数据库构建 JasperServer 时出现问题

python - 在 DD/MM/YYYY 和 YYYY-MM-DD 之间转换日期?

php - 如何连续比较当前时间与数据库中的日期时间字段?

javascript - 根据一个属性和日期对象的值对数组进行排序,以使用 JavaScript 获取最近的条目