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()
方法。
出于某种原因,我的代码在我的日期比较中返回了向后的答案。 (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()
。此答案涵盖从字段 timeDifferenceDouble()
方法。