当前位置: 首页 > 知识库问答 >
问题:

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

融泓
2023-03-14

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

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

当开始日期和结束日期分别为2017年2月3日和2017年3月3日时,显示的天数为29天。虽然当他们在同一天,它是显示1。(一个人休假的天数。因此,如果一个人休假一天,他必须选择相同的开始和结束日期。因此,在这种情况下,他休假两天)。

我做错了什么?谢谢你抽出时间。

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

共有3个答案

井昊乾
2023-03-14
public static int getDaysDifference(Date fromDate,Date toDate)
{
if(fromDate==null||toDate==null)
return 0;

return (int)( (toDate.getTime() - fromDate.getTime()) / (1000 * 60 * 60 * 24));
}
能翔宇
2023-03-14

科特林

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

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

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

val millionSeconds = yourDate1.time - yourDate2.time

应该管用。

颜文康
2023-03-14

生成日期对象的代码:

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

你得到的答案是28天,因为根据Date(String)constructor,它认为天=3,月=2,年=2017

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

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/3/2017和3/3/2017时,显示的天数是29.尽管它们是同一天,但显示的是1.(请假的天数。如果请假一天,他必须选择相同的开始日期和结束日期。因此,在这种情况下,他请了两天假。 我究竟做错了什么?感谢您的时间。 注意:请不要使用日期构造函数。检查下面接受的答案。使用simpledateformat或Joda时

  • 问题内容: 我正在计算从“开始”到“结束”日期之间的天数。例如,如果起始日期为2010年4月13日,起始日期为2010年5月15日,则结果应为 如何使用JavaScript获得结果? 问题答案:

  • 问题内容: 我有两个输入日期来自Date Picker控件。我选择了开始日期2/2/2012和结束日期2/7/2012。我为此编写了以下代码。 我应该得到6的结果,但是我却得到5。 谁能告诉我如何获得确切的区别? 问题答案: 从Moment文档: 或包含起点: 避免手动打乱时间戳和时区。 根据您的特定用例,您可以 使用和/或强制diff在“端点”处包含或排除(如@kotpal在评论中所建议)。 设

  • 我想要一个计算两个日期之间天数的Java程序。 键入第一个日期(德语表示法;带空格:“dd-mm-yyyy”) 我如何包括闰年和夏季? 我的代码:

  • 我需要计算JPA中2个日期之间的天数。 例如: 到目前为止,我试着: 你会怎么做?

  • 我正在使用一个应用程序来计算两个日期之间的剩余天数,即有一个开始日期和结束日期。我想计算每一天到结束日期的剩余天数。请帮帮我。谢啦