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



我有两个变量:

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

我想从日期29/04/2018开始获得30天的列表。你能告诉我该怎么做吗?我发现只有几天甜菜两个约会。

int days = Days.daysBetween(startDate, endDate).getDays();
List<LocalDate> dates = new ArrayList<LocalDate>(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<LocalDate> 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<LocalDate> getLocalDates(String startdate, int days) {
        List<LocalDate> 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;
    }

加日应该可以解决问题

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

    LocalDate startDate = LocalDate.of(2018, Month.APRIL, 29);
    int howManyDays = 30;
    List<LocalDate> 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, 2018-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(。

如果您确实想使用问题中的代码段,您所要做的就是删除第一行并将第二行和第三行的days更改为howManyDays

链接

  • Oracle 教程:说明如何使用java.time的日期时间。
  • 乔达时代主页

相关内容

  • 没有找到相关文章

最新更新