2015-09-05 72 views
5

操作日期会导致一些问题。从Notes DateTime对象中设置Java日期对象

我创建了一些Java代码,它从Notes数据库中读取文档,然后使用Notes文档中的值填充Java对象中的某些字段。 Notes文档包含DataTime字段“ExpPayDate”,我想将它存储在Java对象中,但在Java编辑器中出现语法错误。我的代码如下所示:

for (int n = 1 ; n < col.getCount(); n++){ 
    Document pDoc = col.getNthDocument(n); 
    PaymentItem pItem = new PaymentItem(); 
    Date pDate = pDoc.getItemValue("ExpPayDate")[0]; 
    pItem.setExpPayDate(pDate); 
    . 
    . 
    . 
    pDoc.recycle();  
} 

我已经试过各种方法,从PDOC getItemValue getItemValueDateTime获得价值 上面的代码给出了一个snytax错误“类型OD表达式必须豆数组类型,但被解析为载体,”如果我删除[0]的错误是“类型不匹配不能将矢量转换为日期” 我猜测我错过了一些非常简单的事情,但它让我目前陷入了困境。

+1

'pDoc.getItemValue(“ExpPayDate”)。get(0)'should do。 – MirMasej

回答

11

使用DateTime的.toJavaDate()。它将Domino的DateTime值转换为Java的java.util.Date。

DateTime dateTime = (DateTime) pDoc.getItemValueDateTimeArray("ExpPayDate").get(0); 
Date pDate = dateTime.toJavaDate(); 
+0

从那里你可以通过'java.util.Date :: toInstant'转换为'java.time.Instant',以避免使用'Date'/'Calendar'糟糕的混乱。那些麻烦的旧遗留类现在被java.time类所取代。 –

+0

Domino 9.0.1仍然在Java 1.6上,但我们期待支持Java 1.8的Feature Pack 9。然后,我们也可以使用java.time.Instant :) –

+0

大部分java.time功能都被移植到[* ThreeTen-Backport *](http://www.threeten.org/)中的Java 6和Java 7中threetenbp /)项目由同一个人。 –