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

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

    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转换为Date,如下所示:

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));

请检查链接

如果您使用Joda Time,它将更加简单:

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

以上是 Android计算两个日期之间的天数 的全部内容, 来源链接: utcz.com/qa/429496.html

回到顶部