java - 如何比较 java 8 中的两个 java.time.Period?

标签 java date java-8 period

如何在 Java 8 中比较两个时期?

例如

Period one = Period.of(10,0,0);
Period two = Period.of(8,0,0);

在这种情况下,一大于二。

最佳答案

的确,由于月的标准长度未定义,在一般情况下比较两个 Period 对象是没有意义的。

但是,在许多情况下,您完全可以接受与以下类似的实现。该合约将类似于 compareTo() 的合约:

public int comparePeriodsApproximately(Period p1, Period p2) {
    return period2Days(p1) - period2Days(p2);
}

private int period2Days(Period p) {
    if (p == null) {
        return 0;
    }
    return (p.getYears() * 12 + p.getMonths()) * 30 + p.getDays();
}

关于java - 如何比较 java 8 中的两个 java.time.Period?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41320609/

相关文章:

javascript - JavaScript 中的 getYear() 返回 118

java - 该进程无法访问该文件,因为该文件正在被另一个进程使用

c# - PLINQ (C#/.Net 4.5.1) 与 Stream (JDK/Java 8) 性能对比

Java、Android 将参数传递给方法

java - 错误 : JAVA_HOME is not set and could not be found after Eclipse installation

date - 如何从 civil.Datetime 获取 time.Time

r - 为什么无穷远的日期看起来像 NAs 但行为像日期?

java - 哪种代码在查找列表中的特定元素方面表现更好

java - JTabbedPane 如何拥有多行选项卡,而每个选项卡面板底部没有额外的间距/填充?

java - 在 JSP 页面上显示树