两个 LocalDateTimes 的 java 比较器

标签 java time jodatime comparator

一个名为 MyCustomClass 的自定义类有一个属性,它是 joda LocalDateTime。我需要创建一个 java.util.Comparator 类来通过 TimeStamp 属性比较 MyCustomClass 的实例,该属性的类型为 LocalDateTime 。我已经阅读了几篇关于此的帖子(包括 this one ),并且我已经尝试了所有方法,但答案中显示的方法似乎都不起作用。例如下面几种方式会抛出编译错误:

import java.time.temporal.ChronoUnit;
import java.util.Comparator;

import org.joda.time.DateTime;
import org.joda.time.Duration;
import org.joda.time.Period;

import my.app.model.MyCustomClass;

public class MyCustomClassComparator implements Comparator<MyCustomClass>{
    public int compare(MyCustomClass mcc1, MyCustomClass mcc2) {
        //this first attempt throws a return type error for the method.
        return Period.fieldDifference(mcc2.getTimestamp(), mcc1.getTimestamp());
        //This next attempt says that LocalDateTimes are not valid arguments
        Duration.between(mcc2.getTimestamp(), mcc1.getTimestamp());
        //The next approach also says LocalDateTimes are not valid arguments.
        DateTime.parse(mcc2.getTimestamp()), mcc1.getTimestamp()).getSeconds();
        //This boilerplate approach says the minus sign is not valid for LocalDateTime
        return mcc1.getTimestamp() - mcc2.getTimestamp();
    }
}

我打算在代码的其他地方使用它,例如:

List<MyCustomClass> mccs = new ArrayList<MyCustomClass>();
// Sort by time stamp:
Collections.sort(mccs, new MyCustomClassComparator());

我如何编写一个 Comparator 类来根据它们的 Joda LocalDateTime 属性比较 MyCustomClass 的实例?

最佳答案

如果您只需要一个比较器实例:

类似于Iłya Bursov的答案,因为 LocalDateTime 实现可比较,你可以使用 Comparator.comparing

Comparator.comparing(MyCustomClass::getTimestamp)

关于两个 LocalDateTimes 的 java 比较器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32447885/

相关文章:

java - JSF,Primefaces LazyDataModel - 在不调用加载方法的情况下更新行

datetime - 在Java中将POSIX时间转换为Joda时间

java - 使用 java 在时间轴中查找缺失的日期范围

java - Waffle SSPI如何设置SPNEGOmutualFlag

java - 为什么我不能将 HashMap<CharSequence,CharSequence> 设置为 HashMap<String,String>

java - 内部服务器错误

Android - 获取计时器小部件的时间

swift - 从 "Start"时间计算 "End"时间

r - 将时间对象转换为 R 中的分类(早上、下午、晚上、晚上)变量?

java - 如何创建一个具有绝对值的 java.util.Date 字段而不改变值的时区偏移?