2015-08-28 56 views
3

我使用notes.jar lotus notes api提取电子邮件的日期和时间。当我将它们添加到集合中,如果添加它们是这样的:Java对日期时间值集合进行排序

Vector times = doc.getItemValueDateTimeArray("PostedDate"); 
    for (int j=0; j<times.size(); j++) { 
     Object time = times.elementAt(j); 
     if (time.getClass().getName().endsWith("DateTime")) { 
      String Listadd = ((DateTime)time).getLocalTime(); 
      NotesDates.add((DateTime)time); 

我得到的错误:

lotus.domino.local.DateTime cannot be cast to java.lang.Comparable 

当我添加的值作为字符串代码运行,但我不能排序的集合。

如何排列日期和时间的集合以查找最早和最新的?

+3

你需要写一个比较''' –

+2

VECTOR'和Lotus Notes,还没有看到那些在很长一段时间.. –

+1

只是想知道:为什么'time.getClass()的getName()。 endsWith(“DateTime”)'而不是'time instanceof DateTime'? – RealSkeptic

回答

5

您有几个选项。这里有两个。

  1. 使用java.util.Date代替lotus.domino.local.DateTime 莲花的集合票据DateTime对象有一个方法toJavaDate()和java.util.Date实现了Comparable接口,让

  2. 为lotus.domino.local.DateTime对象实现自定义比较器。将日期再次转换为java日期可能最简单,并使用它的比较方法,而不是重新创建轮子。

2

创建一个自定义Comparator,输入Lotus的DateTime

代码内部根据需要比较DateTime,例如将它们转换为标准java.util.Date或获取单个元素(年份,月份,日期...)并单独比较它们。

相关问题