2015-09-05 68 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 /)項目由同一個人。 –