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

(Java/Android)计算两个日期之间的天数,并以特定格式显示结果

方建明
2023-03-14

我试图计算两个日期之间的天数,如下所示:

  • 获取当前日期

我尝试了不同的方法,但不能得到我想要的结果上面。我发现Android DatePicker对话框将日期转换为整数。我还没有找到一种方法让DatePicket小部件返回日期变量而不是整数。

private DatePickerDialog.OnDateSetListener mDateSetListener =
        new DatePickerDialog.OnDateSetListener() {

            public void onDateSet(DatePicker view, **int** year, 
                                  **int** monthOfYear, **int** dayOfMonth) {
                enteredYear = year;
                enteredMonth = monthOfYear;
                enteredDay = dayOfMonth;
            }
        };

我试图将系统日期转换为整数,基于上述,但这并不真正工作时,试图计算日期之间的2天。

private void getSystemDate(){
     final Calendar c = Calendar.getInstance();

        mYear = c.get(Calendar.YEAR);
        systemYear = mYear;

        mMonth = c.get(Calendar.MONTH);
        systemMonth = mMonth + 1;

        mDay = c.get(Calendar.DAY_OF_MONTH);
        systemDay = mDay;

}

共有3个答案

竺捷
2023-03-14

java/android API为您提供了所有答案:

    Calendar myBirthday=Calendar.getInstance();
    myBirthday.set(1980, Calendar.MARCH, 22);
    Calendar now = Calendar.getInstance();
    long diffMillis= Math.abs(now.getTimeInMillis()-myBirthday.getTimeInMillis());
    long differenceInDays = TimeUnit.DAYS.convert(diffMillis, TimeUnit.MILLISECONDS);
宗政卓
2023-03-14
long delta = Date2.getTime() - Date1.getTime();

new Date(delta);

从这里,你只需选择你的格式。也许用一个日期格式化程序?至于决定未来的事情等等,你可以看看三角洲是正的还是负的。负增量表示过去的事件。

宁浩博
2023-03-14
/** 
  *  Returns a string that describes the number of days
  *  between dateOne and dateTwo.  
  *
  */ 

public String getDateDiffString(Date dateOne, Date dateTwo)
{
    long timeOne = dateOne.getTime();
    long timeTwo = dateTwo.getTime();
    long oneDay = 1000 * 60 * 60 * 24;
    long delta = (timeTwo - timeOne) / oneDay;

    if (delta > 0) {
        return "dateTwo is " + delta + " days after dateOne";
    }
    else {
        delta *= -1;
        return "dateTwo is " + delta + " days before dateOne";
    }
}

编辑:刚刚在另一个线程中看到了同样的问题:如何使用java计算两个日期之间的差异

Edit2:要获得年/月/周,请执行以下操作:

int year = delta / 365;
int rest = delta % 365;
int month = rest / 30;
rest = rest % 30;
int weeks = rest / 7;
int days = rest % 7;
 类似资料:
  • 问题内容: 我正在尝试计算两个日期之间的天数,如下所示: 获取当前日期 获取过去或将来的日期 计算两者之间的差。1,没有。2 以以下格式显示日期 如果结果是过去(2天前)或将来(2天后) 格式将为:天,周,月,年 我尝试了不同的方法,但无法获得上面想要的结果。我发现 Android DatePicker 对话框将日期转换为Integer。 我还没有找到一种使DatePicket小部件返回日期变量而

  • 问题内容: 我编写了以下代码来查找两个日期之间的日期 当开始日期和结束日期分别是2/3/2017和3/3/2017时,显示的天数是29.尽管它们是同一天,但显示的是1.(请假的天数。如果请假一天,他必须选择相同的开始日期和结束日期。因此,在这种情况下,他请了两天假。 我究竟做错了什么?感谢您的时间。 注意:请不要使用日期构造函数。检查下面接受的答案。使用simpledateformat或Joda时

  • 我写了以下代码来查找两个日期之间的日期 当开始日期和结束日期分别为2017年2月3日和2017年3月3日时,显示的天数为29天。虽然当他们在同一天,它是显示1。(一个人休假的天数。因此,如果一个人休假一天,他必须选择相同的开始和结束日期。因此,在这种情况下,他休假两天)。 我做错了什么?谢谢你抽出时间。 注意:请不要使用日期构造函数。检查下面被接受的答案。使用simpledateformat或Jo

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

  • 问题内容: 我想要一个Java程序来计算两个日期之间的天数。 键入第一个日期(德语表示法;带空格:“ dd mm yyyy”) 输入第二个日期。 该程序应计算两个日期之间的天数。 如何包含include年和夏季? 我的代码: 问题答案: 你正在使用你的字符串进行一些不必要的转换。有一个SimpleDateFormat类-试试这个: 编辑:既然有一些关于此代码的正确性的讨论:它确实照顾care年。但

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