(爪哇/ Android的)计算2个日期之间的天并以特定的格式呈现所述结果((Java / Andr

2019-06-23 23:13发布

我试图做2个日期如下之间计算天数:

  1. 获取当前日期
  2. 获取过去或将来的日期
  3. 不计算之间的差别。 1,没有。 2
  4. 目前日期按以下格式
    • 如果结果是在过去(2小时前)或将来(2天)
    • 格式:日,周,月,年

我尝试不同的方法,但不能得到上面我想要的结果。 我发现,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;

}

Answer 1:

/** 
  *  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;


Answer 2:

long delta = Date2.getTime() - Date1.getTime();

new Date(delta);

从这里,你只需选择您的格式。 也许使用的日期格式? 至于determing未来的东西,所有这一切,你只能看见如果增量为正或负。 负增量会显示过去的事件。



Answer 3:

好了,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);


文章来源: (Java / Android) Calculate days between 2 dates and present the result in a specific format