试试这段代码:
<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。
答案 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上尝试过它。