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

Ann*_*Ann 2 java jodatime

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

那么是否有一种替代方法可以作为结束时间(包括结束时间)

Arv*_*ash 6

时间

我建议您使用现代 Date-Time API *

下面引用的是Joda-Time 主页上的一个通知:

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

您可以使用!date.isAfterwheredate是对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)) {
            // ...
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

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


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

  • 可靠的答案。进一步提示: [*ThreeTen-Extra 中的 [`LocalDateRange`](https://www. Threeten.org/ Threeten-extra/apidocs/org. Threeten.extra/org/ Threeten/extra/LocalDateRange.html) 类*](https://www.thirden.org/third-extra/) 库有方法将结尾视为包容性,使用“封闭”术语,如全封闭与半开放。但我建议始终使用半开来保持逻辑一致。我看到商人之间关于全封闭与半开放的许多误解。而且,使用半开可以使时间跨度整齐地邻接。 (3认同)