0

Androidアプリケーションで日付を比較していますが、日付が等しい場合、compareToまたはequalsメソッドが日付が等しくないことを返します。デバッグしましたが、両方のオブジェクトが同じ値を持っていることがわかります。しかし、それがうまくいかない方法もあります。以下は私がやっている方法です:

public static boolean compareDates(long deliveryTime, Date date) throws ParseException {

    Date deliveryDate = convertLongToDate(deliveryTime);
    deliveryDate.setHours(0);
    deliveryDate.setMinutes(0);
    deliveryDate.setSeconds(0);

    if (deliveryDate.equals(date))
    {
        return true;
    }

    return false;
}

私のdateオブジェクトには が含まれていないため、両方のオブジェクトが同じ値を持つことができるように、時間timeも に設定しています。しかし、それは機能しません。どんな助けでも大歓迎です。ありがとう!deliverTime's0(zero)

4

3 に答える 3

0

あなたが作ってdatedeliverydateするならdate objects、あなたは使うことができます

date.compareTo(deliveryDate);

これにより、次の値が返されます。0日付が同じ場合、日付が。より新しい場合は0より大きい値、deliveryDate日付が。より前の場合は0より小さい値deliveryDate

日付をに入れるにはdate format、次のようなものを使用できます。

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date date = sdf.parse(date);
        Date deliveryDate = sdf.parse(deliveryTime);
于 2013-03-11T13:52:33.417 に答える
0

Dateからオブジェクトを作成しdeliveryTime、時、分、秒を比較します。以下にコードを示します。

public static boolean compareDates(long deliveryTime, Date date) {
  Date d = new Date(deliveryTime);
  return(d.getHours() == date.getHours() && d.getMinutes() == date.getMinutes() && d.getSeconds() == date.getSeconds());
}
于 2013-03-11T13:41:27.363 に答える
0

日付に変換するのではなく、単に比較する方が簡単ではないでしょうdeliveryTimeか?date.getTime()deliveryTime

編集

ミリ秒を無視したいと言っていなかったので、次のことができます:

(deliveryTime / 1000) == (date.getTime() / 1000) 

これにより、ミリ秒が取り除かれます。あるいは、

Calendar c = Calendar.getInstance();
c.setTime(deliveryTime);
c.set(Calendar.MILLISECOND, 0);
//Clear out the other fields you don't care to compare
Date deliveryDate = c.getTime()
于 2013-03-11T13:26:54.873 に答える