4

simpledateformaterまたは日付から文字列への変換を使用せずに、日付パラメーターが現在の日付(yyyy-MM-dd)であることを見つけたかっただけで、検索は等しいです。

specifiedDate=2012-12-20
currentDate=2012-12-21

specifiedDate == currentDate

簡単にするために、検証中に時間(つまり、HH:mm:S)を含めたくありません

私は次のようなことを試しました

public boolean isCurrentDate(Calendar date){
 Calendar currentDate = Calendar.getInstance().getTime();
 if (currentDate.getDate()==(date.getTime().getDate()) 
            && currentDate.getMonth()==(date.getTime().getMonth())  
            && currentDate.getYear()==(date.getTime().getYear()) )
 {
  return true;
 }

 return false;
}

より良い方法を提案するか、これに既に利用可能なライブラリがあるかどうかを教えてください!!

4

6 に答える 6

2

比較する前に時間フィールドを0に設定するのはどうですか

currentDate.set(Calendar.HOUR_OF_DAY, 0);  
currentDate.set(Calendar.MINUTE, 0);  
currentDate.set(Calendar.SECOND, 0);  
currentDate.set(Calendar.MILLISECOND, 0); 
于 2012-12-21T05:53:22.213 に答える
2

あなただけをしたい場合は、これを試してください

1) 文字列の使用

String s1 = new String("2012-01-27");
String s2 = new String("2011-01-28");
System.out.println(s1.compareTo(s2));

辞書式に s1 が s2 よりも「大きく」、必要なものである場合、結果は TRUE になります。詳細については、compareTo() メソッドの javadoc を参照してください。

2) Joda Time の使用

Joda Time libを使用すると、以下のように達成できます

DateTime first = ...;
DateTime second = ...;

LocalDate firstDate = first.toLocalDate();
LocalDate secondDate = second.toLocalDate();

return firstDate.compareTo(secondDate);

私は2番目のオプションを好む

于 2012-12-21T05:50:35.317 に答える
1

最後の行&& currentDate.getYear()==(date.getMonth()) )は、年と年ではなく、年と月を比較しているように見えます。これはあなたの問題でしょうか?

于 2012-12-21T05:51:55.333 に答える
1

これを試して:

currentDate.set(Calendar.DATE, 0);

于 2012-12-21T06:10:07.877 に答える
1

カレンダーをご利用の場合

public static boolean isSameDay(Calendar cal1, Calendar cal2) {
            if (cal1 == null || cal2 == null) {
                throw new IllegalArgumentException("The dates must not be null");
            }
            return (cal1.get(Calendar.ERA) == cal2.get(Calendar.ERA) &&
                    cal1.get(Calendar.YEAR) == cal2.get(Calendar.YEAR) &&
                    cal1.get(Calendar.DAY_OF_YEAR) == cal2.get(Calendar.DAY_OF_YEAR));
        }



public static boolean isToday(Calendar cal) {
        return isSameDay(cal, Calendar.getInstance());
    }

デートを利用している場合

public static boolean isSameDay(Date date1, Date date2) {
        if (date1 == null || date2 == null) {
            throw new IllegalArgumentException("The dates must not be null");
        }
        Calendar cal1 = Calendar.getInstance();
        cal1.setTime(date1);
        Calendar cal2 = Calendar.getInstance();
        cal2.setTime(date2);
        return isSameDay(cal1, cal2);
    }

 public static boolean isToday(Date date) {
        return isSameDay(date, Calendar.getInstance().getTime());
    }
于 2012-12-21T05:54:53.947 に答える