XPages - Сравнение дат неверно - PullRequest
0 голосов
/ 28 апреля 2020

Почему-то мой код возвращает обратный ответ в моем сравнении дат. (SS JS)

У меня есть 2 кодовых блока, один ниже, другой просто меняет строку if (dtCreated dtCutoff)

try{

var sdf = new java.text.SimpleDateFormat("dd-MM-yyyy");
var dtCreated = document1.getItemValueDate("CreatedDate");
var dtCutoff = new Date(2002, 03, 22, 00, 30);

dtCreated = dtCreated == null?"":sdf.format(dtCreated);
dtCutoff = dtCutoff == null?"":sdf.format(dtCutoff);
print("ONE: Created: " + dtCreated);
print("ONE: Cutoff: " + dtCutoff);

if(dtCreated < dtCutoff) {
print ("1.1  created before cutoff return true");
    return true;
}else{
print ("1.2  created before cutoff return false")
    return false;
}

}catch(e){
    openLogBean.addError(e,this.getParent());
}

По какой-то причине, кажется, что результат смешивается, когда по дате создания находится после даты отсечки и все же говорится, что дата создания предшествует дате отсечения, и наоборот.

Есть идеи, почему? Свидания всегда были моей ахиллесовой пятой. Каждый блок кода используется в загруженном свойстве пользовательского элемента управления. Моя конечная цель - показать один пользовательский элемент управления или другой, если документ был создан до или после определенной даты.

Печать с консоли приведена ниже, спасибо:

HTTP JVM: ONE: Created: 26-02-2020
HTTP JVM: ONE: Cutoff: 22-04-2002
HTTP JVM: 1.2  created before cutoff return false
HTTP JVM: TWO: Created: 26-02-2020
HTTP JVM: TWO: Cutoff: 22-04-2002
HTTP JVM: 2.1  created after cutoff return true

1 Ответ

3 голосов
/ 28 апреля 2020

Проблема в том, что вы сравниваете текстовые строки, а не даты. Таким образом, «22 ....» находится в алфавитном порядке раньше, чем «26 ....». Для сравнения вы либо хотите получить значение поля в виде Java даты и использовать .before(). Этот ответ охватывает получение Java даты из поля Установка Java объекта Date из Notes DateTime Object . Или создайте Domino DateTime для dtCutOff и используйте метод Domino DateTime timeDifferenceDouble().

...