(Java / Android)计算2个日期之间的天数,并以特定格式显示结果
问题内容:
我正在尝试计算两个日期之间的天数,如下所示:
- 获取当前日期
- 获取过去或将来的日期
- 计算两者之间的差。1,没有。2
- 以以下格式显示日期
- 如果结果是过去(2天前)或将来(2天后)
- 格式将为:天,周,月,年
我尝试了不同的方法,但无法获得上面想要的结果。我发现 Android DatePicker
对话框将日期转换为Integer。
我还没有找到一种使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;
}
};
我尝试根据上述将系统日期转换为Integer,但是在尝试计算两个日期之间的天数时,这实际上不起作用。
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;
}
问题答案:
/*
* 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;