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

我试图计算两个date之间的天数如下:

  1. 获取当前date
  2. 获取过去或未来的date
  3. 计算没有。 1和不。 2
  4. 以下列格式显示date
    • 如果结果在过去(2天前)或未来(2天内)
    • 格式将会:天,周,月,年

我尝试了不同的方式,但无法得到我想要的结果。 我发现Android DatePicker对话框将date转换为Integer。 我还没有find一种方法使DatePicket小部件返回datevariables,而不是整数。

private DatePickerDialog.OnDateSetListener mDateSetListener = new DatePickerDialog.OnDateSetListener() { public void onDateSet(DatePicker view, **int** year, **int** monthOfYear, **int** dayOfMonth) { enteredYear = year; enteredMonth = monthOfYear; enteredDay = dayOfMonth; } }; 

我试图将系统date转换为Integer,基于上面的内容,但是在尝试计算两个date之间的date时,这并不起作用。

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

Solutions Collecting From Web of "(Java / Android)计算两个date之间的天数并以特定格式显示结果"

 /** * 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计算两个date之间的差异

编辑2:要得到年/月/周,做这样的事情:

 int year = delta / 365; int rest = delta % 365; int month = rest / 30; rest = rest % 30; int weeks = rest / 7; int days = rest % 7; 
 long delta = Date2.getTime() - Date1.getTime(); new Date(delta); 

从这里,你只需select你的格式。 也许使用date格式化程序? 至于确定未来的东西和所有这一切,你可以看看三angular洲是积极还是消极。 负三angular洲将表示过去的事件。

那么,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);