我在 Java 方法中有这段代码:
colVal = ve.getColumnValues();
System.out.println("Got colVal");
System.out.println("Col values = " + colVal.toString());
try {
Document pDoc = ve.getDocument();
System.out.println("Start MyDate");
DateTime dt = (DateTime) pDoc.getItemValueDateTimeArray("ExpPayDate").get(0);
Date pDate = dt.toJavaDate();
pItem.setMyDate(pDate);
} catch (Exception e) {
// date error
System.out.println("setMyDate Failed "+ e.toString());
}
日志看起来像这样:
12/09/2015 02:49:59 PM HTTP JVM: Got colVal
12/09/2015 02:49:59 PM HTTP JVM: Col values = [1bp8frg61ze9s, 24/09/2015 12:00:00 PM MDT, , 0.0, ---, , --- No Agent ---, , ]
我使用 ViewEntry 是因为我需要维护 View 排序顺序。
这样做的问题是 ve.getDocument()
意味着到服务器的额外访问并且可能变得相当昂贵。
所以我尝试只使用 colVal.get(1),它被视为 Notes DataTime,但 colVal.get(1).toJavaDate() 似乎不可用。
更改代码以尝试从 colVal 中获取值:
System.out.println("Got colVal");
System.out.println("Col values = " + colVal.toString());
try {
System.out.println("Start MyDate");
System.out.println("Get value from colVal " + colVal.get(1).toString());
//pItem.setMyDate(pDate);
} catch (Exception e)
System.out.println("setExpPayDate Failed " + e.toString());
}
当我运行这个“get value from colVal”时会导致错误:
12/09/2015 03:05:55 PM HTTP JVM: Start MyDate
12/09/2015 03:05:55 PM HTTP JVM: setMyDate Failed java.lang.ClassCastException: lotus.domino.local.DateTime incompatible with java.lang.String
我可以根据文档执行所需的操作,但似乎无法通过 viewEntry 和 ve.getColumnValues() 进行操作。
最佳答案
直接的解决方案是您需要将对象转换为 DateTime
才能调用 toJavaDate
方法。例如:
DateTime dt = (DateTime)colVal.get(1);
Date date = dt.toJavaDate();
这是因为 getColumnValues
返回的 Vector
返回 Object
类型的值,因为它可以混合。
在这种特定情况下,还有一种方法可以直接将列值作为 Date
获取。如果您在获取列值之前调用 entry.setPreferJavaDates(true)
,则日期/时间值将表示为 Date
对象而不是 DateTime
.无论如何,您仍然可能最终将列值强制转换为 Date
,但这可能会带来一点便利。它还消除了在循环内执行 entry.recycle(colVal)
以确保回收列值中的 DateTime
的需要。
关于java - 从 View 条目获取 Notes 日期时间到 JAVA 日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32543809/