XPages中发现的错误

时间:2015-03-01 14:31:53

标签: xpages lotus-formula

试试这段代码:

<xp:text escape="true" id="computedField4">
    <xp:this.value><![CDATA[#{javascript:
        var td= @Adjust(@Date(2015,3,1), 0, 1, 0, 0, 0, 0);
        return @Text(@Year(td))+","+@Text(@Month(td))+","+@Text(@Day(td));
    }]]></xp:this.value>
</xp:text>

预期产出:2015,4,1

实际产量:2015,3,29

更新

这解决了这个问题,但有一个较短的版本:

<xp:text escape="true" id="computedField4">
    <xp:this.value><![CDATA[#{javascript:
        var cal= java.util.Calendar.getInstance();
        cal.add(java.util.Calendar.MONTH, 1);
        var td:Date= cal.getTime();
        return td.getFullYear()+","+(td.getMonth()+1)+","+td.getDate();
    }]]></xp:this.value>
</xp:text>

TIA。

2 个答案:

答案 0 :(得分:2)

我无法在Windows上的9.0.1 FP2 HF1上重现,英国语言环境中的计算字段中的@Date(2015,3,1)将在3月1日返回,正如预期的那样。但这可能是一个因素http://xpages.info/XPagesHome.nsf/Entry.xsp?documentId=5655E1203988BEF0852578CB0066A339。您将跨越夏令时,以及结合本地和UTC。 更新是更好的方法。那么你只使用Java对象,所以不要在内部依赖操作。此外,您正在处理同时具有日期和时间并且特定于区域设置的Calendar对象,而不是在没有时间的情况下设置@Date(),然后运行@Adjust,这样做也会继续在夏令时开始。

答案 1 :(得分:1)

我试了一下,发现我得到了2015,4,1。你在运行哪个版本的Domino?我在Win 64上的9.0.1FP2 HF384上尝试过它。