Java 对一组日期时间值进行排序

Java sorting a collection of datetime values

我正在使用 notes.jar 莲花笔记 api 提取电子邮件的日期和时间。当我将它们添加到集合中时,如果像这样添加它们:

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

当我将值添加为字符串时,代码运行,但我无法对集合进行排序。

如何对日期和时间集合进行排序以查找最早和最晚的?

创建自定义 Comparator,将 Lotus 的 DateTime 作为输入。

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

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

  1. 使用 java.util.Date 的集合代替 lotus.domino.local.DateTime lotus notes DateTime对象有一个方法toJavaDate(),一个java.util.Date为你实现了Comparable接口

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