簡體   English   中英

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() This answer covers getting a Java date from a field Set a Java date Object from a Notes DateTime Object . 或者,為 dtCutOff 創建一個 Domino DateTime 並使用 Domino DateTime 的timeDifferenceDouble()方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM