Сравните дату за определенный период - PullRequest
0 голосов
/ 06 января 2012

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

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

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

Ответы [ 2 ]

1 голос
/ 06 января 2012
    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 голос
/ 06 января 2012

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

true, если и только если момент, представленный этим объектом Date, равен строго позже, чем момент, представленный когда; иначе 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;
}
...