Как проверить, соответствуют ли конкретные переменные в объект календаря / Дата в Java? - PullRequest
0 голосов
/ 02 января 2012

У меня есть два объекта Date, которые я установил с помощью метода setTime () календаря. Мне нужно проверить, соответствует ли день, но не совпадает ли время, например,

         //date1 is Sat Feb 17 20:49:54 +0000 2012
         //date2 is Sat Feb 17 10:39:58 +0000 2012

            cal1.setTime(date1);
            cal2.setTime(date2);
            if (calOld.equals(calNew)){

          }

Iнужен код, чтобы определить, соответствует ли суббота 17 февраля совпадению, но игнорировать 20:49:54 +0000 2012, заранее спасибо

Ответы [ 6 ]

1 голос
/ 02 января 2012

Вы можете использовать поле дня года, чтобы проверить, равны ли они.

int day1 = cal1.get(Calendar.DAY_OF_YEAR);
int day2 = cal2.get(Calendar.DAY_OF_YEAR);
if(day1 == day2) {
   //Do whatever
}
1 голос
/ 02 января 2012

Ну, вы можете использовать:

cal1.set(Calendar.HOUR_OF_DAY, 0);
cal1.set(Calendar.MINUTE, 0);
cal1.set(Calendar.SECOND, 0);
cal1.set(Calendar.MILLISECOND, 0);

... и сделать то же самое с cal2.Тогда вы просто сможете использовать equals.

В качестве альтернативы, если это не добавляет слишком много накладных расходов вашему приложению, вы можете использовать Joda Time с намного более разумный API.Тогда вы можете просто использовать класс LocalDate, который представляет дату без компонента времени:)

0 голосов
/ 02 января 2012

Используйте функцию усечения: http://commons.apache.org/lang/api-2.5/org/apache/commons/lang/time/DateUtils.html и сравните ее результаты.

0 голосов
/ 02 января 2012

Вы также можете использовать SimpleDateFormat:

public int compareDatePart(Calendar c1, Calendar c2) throws ParseException {
    SimpleDateFormat format = new SimpleDateFormat("MM-dd-yyyy");
    Date dpC1 = format.parse(format.format(c1));
    Date dpC2 = format.parse(format.format(c2));
    return dpC1.compareTo(dpC2);
}
0 голосов
/ 02 января 2012

Там может быть лучший способ:

if (cal1.get(Calender.DATE) == cal2.get(Calender.DATE) &&
    cal1.get(Calender.MONTH) == cal2.get(Calender.MONTH) &&
    cal1.get(Calender.YEAR) == cal2.get(Calender.YEAR)) {

}
0 голосов
/ 02 января 2012

вы можете использовать подобное условие .. сравнивая день, месяц и год отдельно в условии if, как показано ниже:

    if(cal1.getMonth()==cal2.getMonth() && cal1.getDay()==cal2.getDay() && cal1.getYear()==cal2.getYear())
{
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...