Проблема с экземплярами Java Date - PullRequest
0 голосов
/ 01 февраля 2012

Я получил следующее в теле кода:

public String getStartDate() {
    return (new SimpleDateFormat("dd/MM/yyyy").format(startDate));
}

public void setStartDate(Date startDate) {
    this.startDate = startDate;
}

и startDate инициируется как Date startDate; Когда я использую метод set startdate, я устанавливаю значение этого экземпляра равным значению объекта, полученного из базы данных.

 setStartDate(rsvIns.startDate);

Теперь проблема здесь, когда я пытаюсь увидеть, равно ли startDate TodayDate,

            Date todayDate = new Date();
            if(startDate.equals(todayDate))
            {
                changeStatus(requestID, "Active");
            }else{
                //update status if others approved
                changeStatus(requestID, "Approved");
            }

I, когда дело доходит до строки равенства, оно выдает ошибку и просто не выполняет часть if или else, следовательно, оператор никогда не выполняется. Есть идеи, почему это может происходить? Спасибо,

1 Ответ

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

Я вижу 2 проблемы из предоставленных вами фрагментов кода:

  1. Date todayDate = new Date () объект содержит информацию о часах, минутах, секундах и миллисекундах. Если вы сравните его с датой, созданной из строки «dd / MM / yyyy», у вас будет проблема, вызванная компонентом времени объекта Date.
  2. getStartDate () возвращает объект String. Если это значение присваивается переменной startDate из оператора if, то при вызове equals () со значением параметра объекта Date результат будет ложным независимо от значения startDate и параметра, поскольку классы не совпадают.

Если вы попадаете в подобные ситуации и не видите ответа, скопируйте код в небольшую программу и отладьте трассировку, посмотрите значения объектов. Проследите в код Java.

Я много раз видел разработчиков java с многолетним опытом работы с компонентом времени объекта Date. Они даже очищают часы, минуты и секунды и забывают о компоненте в миллисекундах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...