XPages - 日期比较错误

XPages - Date comparison is wrong

出于某种原因,我的代码在我的日期比较中返回了向后的答案。 (SSJS)

我有 2 个代码块,一个在下面,另一个只是将 if(dtCreated < dtCutoff) 行更改为 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());
}

出于某种原因,结果似乎混淆了,创建日期在截止日期之后,而日期却说创建日期在截止日期之前,反之亦然。

知道为什么吗?日期的东西一直是我的致命弱点。每个代码块用于自定义控件的加载属性。如果文档是在特定日期之前或之后创建的,我的最终目标是显示 1 个自定义控件或另一个。

控制台打印如下,谢谢:

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

问题是您比较的是文本字符串,而不是日期。因此“22....”按字母顺序比“26....”早。为了进行比较,您要么希望将字段值作为 Java 日期获取,要么使用 .before()。此答案涵盖从字段 获取 Java 日期。或者,为 dtCutOff 创建一个 Domino DateTime 并使用 Domino DateTime 的 timeDifferenceDouble() 方法。