如何使用 java 中的 Arraylist 迭代过去 30 天内的所有日期

how to iterate all days in last 30 days using Arraylist in java

我需要获取从今天到过去 30 日之间的所有日期。我想将这一天设置为 arraylist 。

我在 java 中使用日历已经过了 30 天,现在我想获取所有日期并将它们设置到 ArrayList

        Calendar cal = Calendar.getInstance();
        cal.add(Calendar.DATE, 1);
        Date toDate = cal.getTime();
        cal.add(Calendar.DATE, -30);
        Date fromDate = cal.getTime();

帮助我

tl;博士

today.minusDays( 30 ).datesUntil( today ).toList() 

避免遗留日期时间 classes

Calendar class 不适合仅日期值。

此外,class 在设计上存在严重缺陷,现在已过时,多年前已被现代 java.time class 取代es 在 JSR 310 中定义。

java.time.LocalDate

对于仅限日期的值,使用 LocalDate. To get a series of dates, call LocalDate.html#datesUntil 获取流。

获取今天的日期。

ZoneId z = ZoneId.of( "Africa/Tunis" ) ;
LocalDate today = LocalDate.now( z ) ;

返回 30 天。

LocalDate thirtyDaysAgo = today.minusDays( 30 ) ;

获取 Stream 个日期。

Stream< LocalDate > datesStream = thirtyDaysAgo.datesUntil( today ) ;

为该流中的对象制作 List

List< LocalDate > dates = datesStream.toList() ;

我们可以合并这些行。

List< LocalDate > dates = today.minusDays( 30 ).datesUntil( today ).toList() ;