2012-01-06 3 views
0

Я хочу сравнить дату в выбранный период. Я использую методы до и после. вот мой метод.Сравните дату в данный период

public boolean compareDatePeriod() throws ParseException 
{ 
    [.....] 
    if (period.getDateStart().after(dateLine)){ 
     if (period.getDateEnd().before(dateLine)){ 
      result = true; 
      } 
     } 
    ; 
    return result; 
} 

если мой Дэйтлайн = "01/01/2012" и мой period.getDateStart() = "01/01/2012". Я возвращаю ложь. Я не понимаю, почему?

+0

что тип данных ваших '' period' и dartLine'? – Vaandu

+0

Тип данных вашего периода и dartLine: Дата – Mercer

ответ

1
SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy"); 
    Date startDate = dateFormat.parse("01/01/2012"); 
    Date endDate = dateFormat.parse("31/12/2012"); 
    Date dateLine = dateFormat.parse("01/01/2012"); 
    boolean result = false;  
    if ((startDate.equals(dateLine) || !endDate.equals(dateLine)) 
      || (startDate.after(dateLine) && endDate.before(dateLine))) { // equal to start or end date or with in period 
     result = true; 
    } 
    System.out.println(result); 
+1

Он не просил кода, он просто спросил, почему он не ведет себя так, как хотел. Но он выбрал ваш ответ. :) –

+0

:) добавил комментарий в мой код, я попробовал. – Vaandu

+0

пробовал что? вы лениво помогли ему, и я держу пари, что он все еще не понимал, почему это не сработало. Все, о чем я говорю, заключается в том, что цель ответа в StackOVerflow заключается в том, чтобы помочь ассеру узнать, что пошло не так, как код для него, и заставить его совершить ту же ошибку в будущем. Это единственное, что я говорю –

1

Если бы Вы любезно проверить Java documentation, прежде чем отправить свой вопрос, вы бы знали, что метод after возвращает:

истинно тогда и только тогда, когда мгновенная представлена ​​эта дата объекта строго позже, чем в момент представленный, когда; false в противном случае.

В вашем случае даты равны означает, что они не являются strictly later. Таким образом, он будет возвращать false

UPDATE:

public boolean compareDatePeriod() throws ParseException 
{ 
    [.....] 
    if (!period.getDateStart().equals(dateLine)) { 
     if (period.getDateStart().after(dateLine)){ 
      if (period.getDateEnd().before(dateLine)){ 
       result = true; 
       } 
      } 
    return result; 
} 
+0

Итак, как вы справляетесь с этим делом – Mercer

+0

Вы сначала проверяете, равны ли они, если вы не выполняете свой обычный тест –

+0

Проверьте мой обновленный ответ –