Java中的Joda-Time间隔是不是有替代方法,它可以作为结束时间

Posted

技术标签:

【中文标题】Java中的Joda-Time间隔是不是有替代方法,它可以作为结束时间【英文标题】:Is there an alternative for Joda-Time interval in Java, which works as end time inclusiveJava中的Joda-Time间隔是否有替代方法,它可以作为结束时间 【发布时间】:2021-08-30 06:27:45 【问题描述】:

我正在尝试检查特定日期是否在特定日期范围内。我在 Java 中遇到了 Joda 时间间隔。但它是结束时间独有的。

那么有没有一种替代方法可以作为结束时间包含在内

【问题讨论】:

您的具体用例是什么?你能更详细地描述一下吗?或者您能否向我们展示使用 joda 的代码,但它并没有达到我们想要的效果? 查看这个答案:***.com/a/13584000/8621733 Strict < 可以否定为>=,所以这可能很有用。 您的日期是否只有年、年月和月日,还是您在谈论java.util.Date 阅读这篇文章,它包含有关如何使用 java.time 的大量信息:***.com/questions/32437550/… 【参考方案1】:

java.time

我建议你使用modern Date-Time API*

下面引用的是home page of Joda-Time的通知:

请注意,从 Java SE 8 开始,用户被要求迁移到 java.time (JSR-310) - JDK 的核心部分,它取代了这个项目。

您可以使用!date.isAfter,其中date 是对LocalDate 的引用,例如

import java.time.LocalDate;

public class Main 
    public static void main(String[] args) 
        LocalDate start = LocalDate.of(2021, 5, 10);
        LocalDate end = LocalDate.of(2021, 6, 10);
        for (LocalDate date = start; !date.isAfter(end); date = date.plusDays(1)) 
            // ...
        
    

Trail: Date Time 了解有关现代日期时间 API 的更多信息。


* 出于任何原因,如果您必须坚持使用 Java 6 或 Java 7,您可以使用 ThreeTen-Backport,它将大部分 java.time 功能向后移植到 Java 6 和 7 . 如果您正在为一个 android 项目工作并且您的 Android API 级别仍然不符合 Java-8,请检查 Java 8+ APIs available through desugaring 和 How to use ThreeTenABP in Android Project。

【讨论】:

可靠的答案。进一步提示:ThreeTen-Extra 库中的 LocalDateRange 类具有将结尾视为包容性的方法,使用“封闭”术语,如全封闭与半开放。但我建议始终使用半开来保持逻辑一致。我看到商人之间关于完全封闭与半开放的许多误解。而且,使用半开可以使时间跨度整齐地邻接。

以上是关于Java中的Joda-Time间隔是不是有替代方法,它可以作为结束时间的主要内容,如果未能解决你的问题,请参考以下文章

在 java 中是不是有 RandomAccessFile 的 readObject() 替代方法

PHP 是不是有“方法重载”的规定,就像 java 和其他一些编程语言一样?如果没有,是不是有替代方案? [复制]

java.lang.ClassNotFoundException: org.joda.time.ReadablePeriod

我应该用threeten代替joda-time吗

Java日期计算之Joda-Time

Java日期简化工具Joda-Time