安卓计算两个日期之间的天数

2022-09-01 10:04:49

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

    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。(休假的天数。因此,如果一个人请了一天的假,他必须选择相同的开始和结束日期。因此,在这种情况下,他已经请了两天的假)。

我做错了什么?感谢您抽出宝贵时间接受采访。

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


答案 1

用于生成日期对象的代码:

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

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

您可以将字符串转换为日期,如下所示:

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

使用上面的模板来制作您的日期对象。然后使用以下代码计算两个日期之间的天数。希望这能清除事情。

它可以按如下方式完成:

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

请查看 JodaTime

如何在Java项目中使用JodaTime


答案 2

科特林

下面是计算从今天到某个日期的天数的示例:

 val millionSeconds = yourDate.time - Calendar.getInstance().timeInMillis
 leftDays.text = TimeUnit.MILLISECONDS.toDays(millionSeconds).toString() + "days"

如果要计算两天,请更改:

val millionSeconds = yourDate1.time - yourDate2.time

应该工作。