10

私は次のように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;

}
4

3 に答える 3

15
/** 
  *  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を使用して2つの日付の差を計算する方法

Edit2:年/月/週を取得するには、次のようにします。

int year = delta / 365;
int rest = delta % 365;
int month = rest / 30;
rest = rest % 30;
int weeks = rest / 7;
int days = rest % 7;
于 2012-04-26T04:58:08.890 に答える
1
long delta = Date2.getTime() - Date1.getTime();

new Date(delta);

ここから、フォーマットを選択するだけです。多分日付フォーマッターを使用しますか?将来のものなどを決定することに関しては、デルタが正か負かを確認することができます。負のデルタは過去のイベントを示します。

于 2012-04-25T23:30:24.833 に答える
1

さて、java /androidAPIにはすべての答えがあります。

    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);
于 2015-02-17T20:21:25.467 に答える