1

我需要在 JODA 库中获取每个月的日期列表。我怎样才能做到这一点?

4

1 回答 1

2

tl;博士

使用java.time , Joda-Time的继任者。

yearMonth               // An instance of `java.time.YearMonth`.
.atDay( 1 )             // Returns a `LocalDate` object for the first of the month.
.datesUntil(            // Get a range of dates.
    yearMonth
    .plusMonths( 1 )    // Move to the following month.
    .atDay( 1 )         // Get the first day of that following month, a `LocalDate` object.
)                       // Returns a stream of `LocalDate` objects.
.toList()               // Collects the streamed objects into a list. 

对于没有方法的旧版 Java Stream#toList,请使用collect( Collectors.toList() ).

java.time

Joda-Time项目现在处于维护模式。该项目建议移至其继任者,即在 JSR 310 中定义并内置于 Java 8 及更高版本中的java.time类。Android 26+ 有一个实现。对于早期的 Android,最新的 Gradle 工具通过 « API desugaring » 提供了大部分java.time功能。

YearMonth

指定一个月。

YearMonth ym = YearMonth.now() ;

询问它的长度。

int lengthOfMonth = ym.lengthOfMonth() ;

LocalDate

要获取日期列表,请获取该月的第一个日期。

LocalDate start = ym.atDay( 1 ) ;

以及下个月的第一天。

LocalDate end = ym.plusMonths( 1 ).atDay( 1 ) ;

获取介于两者之间的日期流。收集到一个列表中。

List< LocalDate > dates = start.datesUntil( end ).toList() ;
于 2022-01-18T07:31:38.300 回答