在Java中,从字段中获取日期值是一个问题
我在Java代码中使用ODA(这很好),但从字段中获取日期值时遇到了问题 如果我使用:在Java中,从字段中获取日期值是一个问题,java,xpages,Java,Xpages,我在Java代码中使用ODA(这很好),但从字段中获取日期值时遇到了问题 如果我使用: DateTime lastApprDt = doc.getItemValue("LastApproved", Date.class); 然后解析器反对并建议“将lastApprDt的类型更改为Date” 如果我将代码更改为: Date lastApprDt = doc.getItemValue("LastApproved", Date.class); 然后解析器很高兴,但当我运行代码时,我得到一个错误:
DateTime lastApprDt = doc.getItemValue("LastApproved", Date.class);
然后解析器反对并建议“将lastApprDt的类型更改为Date”
如果我将代码更改为:
Date lastApprDt = doc.getItemValue("LastApproved", Date.class);
然后解析器很高兴,但当我运行代码时,我得到一个错误:
[ODA::WARNING]自动装箱请求了com.ibm.security.util.calendar.BaseCalendar$日期,但正在返回文档id 992的LastApproved项中的org.openntf.domino.impl.DateTime
我糊涂了!如果doc.getItemValue(“LastApproved”,Date.class)返回日期类型,那么为什么会出现错误?第一个失败,因为它试图将日期对象(来自
getItemValue()
的输出)传递到DateTime对象(LastAppDate
)中
我不太清楚它为什么选择将其检索为com.ibm.security.util.calendar.BaseCalendar.Date
,我在ODA代码中看不到对该类的任何引用。值得检查代码中的导入语句,以确保未选择com.ibm.security.util.calendar.BaseCalendar.Date
作为它认为要使用的相关日期类。我怀疑这可能已经发生了。如果是这样,请将import语句更改为使用java.util.Date
自动装箱日期代码查找特定类以及如何转换它们java.util.Date
是它期望的最明显的一个。我最近添加了java.sql.Date
,我相信是最后一个base 9.0.1和第一个FP8版本java.util.Calendar
是另一个受支持的。像LocalDateTime这样的新Java 8日期类似乎是很好的候选者,因为它们具有更好的时区处理能力,但是将DateTime
时区转换为Java时区并不容易,并且DateTime中的时区是只读的,所以此时自动装箱不起作用
您不需要传递完整的类名作为第二个参数,我运行的代码只传递
Date.class
。这就是为什么我怀疑解析器建议猜测了您想要的错误类,并导入了com.ibm.security.util.calendar.BaseCalendar.Date
第一个失败,因为它试图将日期对象(来自getItemValue()
的输出)传递到DateTime对象(lastApprDate
)中
我不太清楚它为什么选择将其检索为com.ibm.security.util.calendar.BaseCalendar.Date
,我在ODA代码中看不到对该类的任何引用。值得检查代码中的导入语句,以确保未选择com.ibm.security.util.calendar.BaseCalendar.Date
作为它认为要使用的相关日期类。我怀疑这可能已经发生了。如果是这样,请将import语句更改为使用java.util.Date
自动装箱日期代码查找特定类以及如何转换它们java.util.Date
是它期望的最明显的一个。我最近添加了java.sql.Date
,我相信是最后一个base 9.0.1和第一个FP8版本java.util.Calendar
是另一个受支持的。像LocalDateTime这样的新Java 8日期类似乎是很好的候选者,因为它们具有更好的时区处理能力,但是将DateTime
时区转换为Java时区并不容易,并且DateTime中的时区是只读的,所以此时自动装箱不起作用
您不需要传递完整的类名作为第二个参数,我运行的代码只传递
Date.class
。这就是为什么我怀疑解析器建议猜测了您想要的错误类,并导入了com.ibm.security.util.calendar.BaseCalendar.Date
如果您确定该字段包含日期值,您应该能够使用
Date lastApprDt = doc.getItemValue("LastApproved").get(0).toJavaDate();
如果您确定该字段包含日期值,则应该能够使用
Date lastApprDt = doc.getItemValue("LastApproved").get(0).toJavaDate();
确保LastAppDT日期的类型为
java.util.Date
(而不是com.ibm.security.util.calendar.BaseCendar.Date
)。确保LastAppDT日期的类型为java.util.Date
(而不是com.ibm.security.util.calendar.BaseCendar.Date
).确保该日期是java.util.Date(而不是com.ibm.security.util.calendar.BaseCalendar.Date)。谢谢,这很有效。我犯了使用Eclipse建议的类的错误:)Per,请您添加您的注释作为答案,以便我可以将其标记为已接受。谢谢。添加了简单答案:-)确保日期是java.util.Date(而不是com.ibm.security.util.calendar.BaseCalendar.Date)。谢谢,这很有效。我犯了使用Eclipse建议的类的错误:)Per,请您添加您的注释作为答案,以便我可以将其标记为已接受。Thank.simple answer added:-)正如您所猜测的,我选择导入com.ibm.security.util.calendar.BaseCalendar.Date,因为解析器建议这样做。我提醒自己不要对未来如此信任正如您所猜测的,我选择导入com.ibm.security.util.calendar.BaseCalendar.Date,因为解析器建议这样做。我提醒自己不要对未来如此信任D