如何从某个日期获取日期列表?

我有两个变量:

  • startDate – 例如29/04/2018
  • howManyDays – 例如30

我想获得自29/04/2018日期起30天的清单。 你能告诉我怎么办? 我发现只有两天约会。

 int days = Days.daysBetween(startDate, endDate).getDays(); List dates = new ArrayList(days); // Set initial capacity to `days`. for (int i=0; i < days; i++) { LocalDate d = startDate.withFieldAdded(DurationFieldType.days(), i); dates.add(d); } 

我不知道如何更改代码。

您可以使用此示例代码从特定日期开始获取30个日期。

 import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.List; public class Days { public static void main(String[] args) { String startDate = "29/04/2018"; int howManyDays = 30; DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy"); LocalDate localDate = LocalDate.parse(startDate, formatter); List dates = new ArrayList<>(); for (int i = 0; i < howManyDays; i++) { dates.add(localDate.plusDays(i)); } //For check dates.forEach(System.out::println); } } 

运行howManyDays=5给出:

 2018-04-29 2018-04-30 2018-05-01 2018-05-02 2018-05-03 
 public static List getLocalDates(String startdate, int days) { List localDates = new ArrayList<>(); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy"); LocalDate localDate = LocalDate.parse(startdate, formatter); for (int i = 1; i <= days; i++) { localDates.add(localDate.plusDays(i)); } return localDates; } 

plusDays应该做的伎俩

其他答案都很好。 在你的Android手机上运行Java 9之前可能还需要一段时间,但对于其他人来说,我想提供Java 9(及更高版本)代码片段:

  LocalDate startDate = LocalDate.of(2018, Month.APRIL, 29); int howManyDays = 30; List dates = startDate.datesUntil(startDate.plusDays(howManyDays)) .collect(Collectors.toList()); System.out.println(dates); 

输出是:

[2018-04-29,2018-04-30,2018-05-01,2018-05-02,2018-05-03,2018-05-04,2018-05-05,2018-05-06,20188 -05-07,2018-05-08,2018-05-09,2018-05-10,2018-05-11,2018-05-12,2018-05-13,2018-05-14,2018-05 -15,2018-05-16,2018-05-17,2018-05-18,2018-05-19,2018-05-20,2018-05-21,2018-05-22,2018-05-23 ,2018-05-24,2018-05-25,2018-05-26,2018-05-27,2018-05-28]

正如我在评论中已经说过的那样,更喜欢java.time不是Joda-Time(你找到的问题片段正在使用)。 java.time是现代Java的日期和时间API。 Joda-Time主页说:

请注意,Joda-Time被认为是一个很大程度上“完成”的项目。 没有计划重大改进。 如果使用Java SE 8,请迁移到java.time (JSR-310)。

如果您确实想要使用问题中的代码段,那么您只需要删除第一行并在第二行和第三行howManyDays更改为howManyDays

链接

  • Oracle教程:Date Time解释了如何使用java.time
  • Joda-Time主页