java - (Java/Android) 计算2个日期之间的天数并以特定格式呈现结果

标签 java android android-widget

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

  1. 获取当前日期
  2. 获取过去或 future 的日期
  3. 计算 no 之间的差异。 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;

}

最佳答案

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

编辑:刚刚在另一个线程中看到了同样的问题: how to calculate difference between two dates using 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;

关于java - (Java/Android) 计算2个日期之间的天数并以特定格式呈现结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10325117/

相关文章:

java - 在 Android Studio 中运行 YouTube Activity 时出错

java - 编译时包不存在

android - 布局需要太多时间来加载 android

android - 选项卡不适用于 ANDROID 和多个 Activity ?

java - 如何从 JsonArray 解析数组?

java - 扫描仪下一行问题

audio - 从 Android 中的各种内部设备录制音频(通过未记录的 API)

android - 手机静音时如何不播放声音?

java - android :progressTintMode, android :secondaryProgressTintMode and android:progressDrawable do? 是什么意思

android - onUpdate() 没有被小部件调用?