Issue
I need to get a list of days each month in the JODA library. how can I do that?
Solution
tl;dr
Using java.time, the successor to 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.
For older versions of Java without a Stream#toList
method, use collect( Collectors.toList() )
.
java.time
The Joda-Time project is now in maintenance mode. The project recommends moving to its successor, the java.time classes defined in JSR 310 and built into Java 8 and later. Android 26+ has an implementation. For earlier Android, the latest Gradle tooling makes most of the java.time functionality available via « API desugaring ».
YearMonth
Specify a month.
YearMonth ym = YearMonth.now() ;
Interrogate for its length.
int lengthOfMonth = ym.lengthOfMonth() ;
LocalDate
To get a list of dates, get the first date of the month.
LocalDate start = ym.atDay( 1 ) ;
And the first day of the next month.
LocalDate end = ym.plusMonths( 1 ).atDay( 1 ) ;
Get a stream of dates in between. Collect into a list.
List< LocalDate > dates = start.datesUntil( end ).toList() ;
Answered By - Basil Bourque
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.