java - 如何比较实例化的 DateTime 对象?

标签 java datetime

我正在编写一个程序来按日期对日期时间进行排序。 有一个日期时间开始和一个日期时间结束。 它们根据用户输入放入自己的对象中。 DateTime 开始和 DateTime 结束组成自己的术语。 因此,每个术语都有一个自己的对象,其中包含日期时间开始和日期时间结束。

我想要做的是将所有 DateTime 开头和所有 DateTime 结尾按日期排序。 我怎样才能做到这一点?我正在考虑一个比较器,但我似乎无法在自定义对象上执行此操作。

假设用户输入一个开始日期 01/01/2000 和一个结束日期 01/01/2002。这组成了一个术语。 然后,用户输入由开始日期 01/01/2001结束日期 01/01/2003 组成的第二个术语。

我现在想做的是对日期进行排序并创建三个新术语:

beginning 01/01/2000 end 01/01/2001

beginning 01/01/2001 end 01/01/2002

beginning 01/01/2002 end 01/01/2003

我不知道如何继续下去,有什么想法吗?

最佳答案

将每个日期放入一个新集合中,按日期对其进行排序,然后创建包含集合中相邻日期的新对象。

尝试:

public static void main(String[] args) {
    List<YourClass> list = new ArrayList<>();

    list.add(new YourClass(new Date(100000000), new Date(200000000)));
    list.add(new YourClass(new Date(150000000), new Date(250000000)));
    list.add(new YourClass(new Date(50000000), new Date(300000000)));

    System.out.println(list);

    List<Date> dates = new ArrayList<>();
    for (YourClass yc : list){
        if (!dates.contains(yc.beginning)) dates.add(yc.beginning);
        if (!dates.contains(yc.end)) dates.add(yc.end);
    }

    Collections.sort(dates);

    List<YourClass> list2 = new ArrayList<>();

    for (int i=0; i < dates.size() -1; i++){
        list2.add(new YourClass(dates.get(i), dates.get(i+1)));
    }

    System.out.println(list2);

}

public static class YourClass {
    Date beginning;
    Date end;

    public YourClass(Date beginning, Date end) {
        this.beginning = beginning;
        this.end = end;
    }

    @Override
    public String toString() {
        return "\n" + beginning  + " -> " + end ;
    }
}

关于java - 如何比较实例化的 DateTime 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53284130/

相关文章:

PHP 在多个日期范围内查找 N 年内的差距

java - 创建实例后如何强制调用方法

java - 如何比较基本类型中忽略大小写的字符

datetime - 将 UTC 字符串转换为时间对象

python - 显示开始和结束之间的年份

python - Pandas :从 Pandas 表中的日期中减去当前日期

c# - 日期格式 yyyymmdd 到 yyyy-mm-dd

java - 我如何在 javafx 8 中多次使用一个控件?

java - 使用List.subList执行元素批处理逻辑

ant 构建后 java 项目无法运行