0

私は長い間これを試してきました。
今日の日付があり、特定の日付と比較したい。

しかし、このように特定の日付を設定すると、間違った出力が得られます。

    Calendar cal;
    SimpleDateFormat dateformatter;
    String currentdate;
    cal = Calendar.getInstance();
    dateformatter = new SimpleDateFormat("yyyy-MM-dd");

    //Getting today's date
    currentdate = dateformatter.format(cal.getTime());
    Log.i(Class_Tag, "current = " + currentdate);

    //Setting specific date
    Date start = cal.getTime();
    cal.set(2012, 06, 20);
    Date end = cal.getTime();
    Log.i(Class_Tag, "end = " + dateformatter.format(end));

    long diff = end.getDate() - start.getDate();
    Log.i(Class_Tag, "diff : " + diff);

    long diff1 = end.getMonth() - start.getMonth();
    Log.i(Class_Tag, "diff mnth : " + diff1);

    long diff2 = end.getYear() - start.getYear();
    Log.i(Class_Tag, "diff yr : " + diff2);

    if (start.compareTo(end) == 0) {
        Log.i(Class_Tag, "EQUAL");
    } else if (start.compareTo(end) < 0) {
        Log.i(Class_Tag, "end b4 start, delete");
    } else {
        Log.i(Class_Tag, "start b4 end, do nothing");

出力:

current = 2012-06-20
end = 2012-07-20 ////WHY it is showing month as '7' when I've set it to '6'?
diff : 0
diff mnth : 1 //Because of the wrong month in end date, this comes 1 instead of 0
diff yr : 0
end b4 start, delete //this also is not correct

私はいくつかの解決策を試しましたが、利益はありません。

私の唯一の目的は、その特定の日付が今日の日付を過ぎたかどうかを取得することです。

どんな助けでも感謝します。


編集

次のコード スニペットでは、

//Setting specific date
    Date start = cal.getTime();
    cal.set(2012, 06, 20);
    Date end = cal.getTime();

に設定cal.set(2012, 06, 20);するcal.set(2012, 05, 20);と、月差。0に出ます。

これはmonth、特定の日付が「1」ずつ増加していることを意味しますが、 なぜですか?

4

3 に答える 3

2

これを試して;

Calendar cal = Calendar.getInstance();

long dateNowMillis = cal.getTimeInMillis();

cal.set(2013, 1, 23);

long specDate = cal.getTimeInMillis();

if(dateNowMillis > specDate)
{
    System.out.println("Passed");
}
else if(dateNowMillis == specDate)
{
    System.out.println("Now");
}
else
{
    System.out.println("Not passed");
}
于 2012-06-20T05:59:09.180 に答える
1

@GAMA このように取得します:

yourDate.setDate(yourDate.getDate() - daysToSubtract);

それが役に立てば幸い。

于 2012-06-20T06:04:30.053 に答える
1

参考までに、月は 0 から 11 までの整数で表されます。0 は 1 月、1 は 2 月などです。したがって、11 は 12 月です。

Dateの詳細についてはこちら、SimpleDateFormatの詳細についてはこちらをご覧ください。

アップデート:

getMonth()についてもう 1 つ=> 非推奨です。代わりに、こちらCalendar.get(Calendar.MONTH)を確認してください。

于 2012-06-20T05:52:41.173 に答える