XPages-日期比较错误

问题描述 投票:0回答:1

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

我有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());
}

由于某种原因,似乎使结果混淆了,创建日期在截止日期和日期之后,但它表示创建日期在截止日期之前,反之亦然。

任何想法为何?约会一直是我的致命弱点。每个代码块都在自定义控件的load属性中使用。我的最终目标是显示一个自定义控件,或者如果在某个日期之前或之后创建了一个文档,则显示另一个。

从控制台打印在下面,谢谢:

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
xpages xpages-ssjs
1个回答
0
投票

问题是您正在比较文本字符串,而不是日期。这样,“ 22 ....”在字母上早于“ 26 ....”。为了进行比较,您要么要获取字段值作为Java日期,然后使用.before()。此答案涵盖了从字段Set a Java date Object from a Notes DateTime Object获取Java日期。或者,为dtCutOff创建一个Domino DateTime并使用Domino DateTime的timeDifferenceDouble()方法。

© www.soinside.com 2019 - 2024. All rights reserved.