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

标签 java android date datetime kotlin

我编写了以下代码来查找两个日期之间的天数

    startDateValue = new Date(startDate);
    endDateValue = new Date(endDate);
    long diff = endDateValue.getTime() - startDateValue.getTime();
    long seconds = diff / 1000;
    long minutes = seconds / 60;
    long hours = minutes / 60;
    long days = (hours / 24) + 1;
    Log.d("days", "" + days);

当开始日期和结束日期分别为 2/3/2017 和 3/3/2017 时,显示的天数为 29。虽然当它们在同一天时,它显示 1.(一个人需要的天数请假。所以如果一个人只请一天假,他必须选择相同的开始和结束日期。所以在这种情况下,他请了两天假)。

我做错了什么? 感谢您的宝贵时间。

注意:请不要使用日期构造函数。检查下面接受的答案。使用 simpledateformat 或 Joda 时间。日期构造函数已弃用。

最佳答案

生成日期对象的代码:

Date date = new Date("2/3/2017"); //deprecated

你得到 28 天作为答案,因为根据 Date(String) 构造函数它认为日 = 3,月 = 2 和年 = 2017

您可以按如下方式将字符串转换为日期:

String dateStr = "2/3/2017";
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
Date date = sdf.parse(dateStr);

使用上面的模板制作您的 Date 对象。然后使用下面的代码计算两个日期之间的天数。希望这能解决问题。

可以按如下方式进行:

long diff = endDateValue.getTime() - startDateValue.getTime();
System.out.println ("Days: " + TimeUnit.DAYS.convert(diff, TimeUnit.MILLISECONDS));

请查看link

如果你使用 Joda Time,那就简单多了:

int days = Days.daysBetween(date1, date2).getDays();

请查看JodaTime

How to use JodaTime in Java Project

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

相关文章:

Javascript 更新时间函数导致高 CPU

java - 处理警告 : "The expression of type x is boxed into x" 的正确方法是什么

java - 如何在不初始化的情况下访问公共(public)方法

android - By和MobileBy的区别

java - 无法解析符号 "FirebaseRecyclerOptions"

t-sql - 在 SSAS 2012 中为波斯日历(Shamsi 或 Jalali 日期)构建 DimDate

java - Ant zip 任务默认排除了哪些文件?

java - 垃圾收集器 - 多个指针指向同一对象

java - 登录后禁用 JSP 中的后退按钮?

python - 从数据框中的年份值中删除小数