SSJS中的服务器日期和操作时间

时间:2015-11-17 11:51:58

标签: xpages

我希望您的帮助能够在执行操作时获取服务器日期和时间。例如提交,批准,拒绝等

var myDoc:NotesDocument = data_source.getDocument().

我尝试了以下但未能获得服务器时间,这总是存储客户端日期和时间,特别是在客户端执行时。

myDoc.replaceItemValue("ApprovedOn", session.createDateTime(@Now());

以下生成错误/异常。

myDoc.replaceItemValue("ApprovedOn", @Now());

OR

var curr_Date = @Now();
myDoc.replaceItemValue("ApprovedOn", curr_Date);

OR

var mDt:NotesDateTime = session.createDateTime(@Now());
myDoc.replaceItemValue("ApprovedOn", mDt.toJavaDate());

执行JavaScript动作表达式时出错

  

脚本解释器错误,line = 168,col = 17:[TypeError]异常   调用方法NotesDocument.replaceItemValue(字符串,日期)   空

请指导我如何在执行任何操作时将当前服务器日期存储在日期和时间字段中。感谢您的时间和努力。

1 个答案:

答案 0 :(得分:0)

AFAIK,SSJS只能在XPage运行时内运行。对于通过浏览器访问的XPage应用程序,XPage运行时位于服务器上的HTTP任务之上,因此日期和时间将是服务器的。 (这就是我提出上述问题的原因)。

要使用核心Domino API设置字段值,您需要传递NotesDateTime。 NotesDocument SSJS类(映射到基础Java Document类)不允许您传递Java日期。 OpenNTF Domino API允许您传递Java日期并自动转换该值。

XPiNC的最佳方法(这来自Serdar Basegmez,我不能理解)是在SSJS中访问基于服务器的数据库,调用createDocument()方法并访问它的创建日期。在getDatabase()方法中,您必须显式命名服务器。这会对性能产生影响,因为XPiNC在本地运行,所以你从本地连接到另一台服务器,但是可以工作。