Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从某个日期获取日期列表?_Java_Android_Jodatime_Days_Android Jodatime - Fatal编程技术网

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

Java 如何从某个日期获取日期列表?,java,android,jodatime,days,android-jodatime,Java,Android,Jodatime,Days,Android Jodatime,我有两个变量: 起始日期-例如2018年4月29日 多少天-例如30天 我想得到从2018年4月29日起30天的清单。你能告诉我怎么做吗?我发现只有两天可以约会 int days = Days.daysBetween(startDate, endDate).getDays(); List<LocalDate> dates = new ArrayList<LocalDate>(days); // Set initial capacity to `days`. for (i

我有两个变量:

起始日期-例如2018年4月29日 多少天-例如30天 我想得到从2018年4月29日起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);
}
我不知道如何更改代码

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;

    }
星期五就可以了


plusDays应该可以做到这一点

您可以使用此示例代码从特定日期开始获取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);
    }
}

您可以使用此示例代码从特定日期开始获取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);
    }
}

其他答案很好。在Android手机上运行Java 9之前可能还需要一段时间,但是对于其他阅读的人,我想提供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-292018-04-302018-05-012018-05-022018-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-242018-05-252018-05-262018-05-272018-05-28]

正如我在评论中已经说过的,您更喜欢java.time,而不是您为您的问题找到的代码段正在使用的Joda time。time是现代的java日期和时间API。Joda Time主页上说:

请注意,Joda Time被认为是一个基本上已“完成”的项目。 没有计划进行重大改进。如果使用JavaSE8,请迁移 到java.time JSR-310

如果您确实想使用问题中的片段,那么您只需删除第一行,并将第二行和第三行中的天数更改为howManyDays

链接 解释如何使用java.time。
其他答案很好。在Android手机上运行Java 9之前可能还需要一段时间,但是对于其他阅读的人,我想提供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-292018-04-302018-05-012018-05-022018-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-242018-05-252018-05-262018-05-272018-05-28]

正如我在评论中已经说过的,您更喜欢java.time,而不是您为您的问题找到的代码段正在使用的Joda time。time是现代的java日期和时间API。Joda Time主页上说:

请注意,Joda Time被认为是一个基本上已“完成”的项目。 没有计划进行重大改进。如果使用JavaSE8,请迁移 到java.time JSR-310

如果您确实想使用问题中的片段,那么您只需删除第一行,并将第二行和第三行中的天数更改为howManyDays

链接 解释如何使用java.time。
但是你已经有了做你想做的事情的代码,你只需要几天而不是几天。我的发现仅仅意味着你只找到了一个类似的例子,你不知道如何适应它吗?@MattiVirkkunen是的,我不知道如何改变它。你知道这段代码是如何开始的吗?还是你只是复制和粘贴?如果您通读并理解了代码,您将知道如何调整它,因为它已经在做您想要做的事情了。为此作业添加外部依赖项是很有意义的,因为过时的java.util.Calendar类对它的内置支持设计得很差。我当然会选择,这样我就可以使用。Joda Time主页上说:“请注意,Joda Time被认为是一个基本上已“完成”的项目。没有计划进行重大的增强。如果使用Java SE 8,请迁移到Java.Time JSR-310。”重复的:和。请在发布前彻底搜索堆栈溢出。但是你已经有了做你想做的事情的代码,你只有天而不是多少天。我的发现仅仅意味着你只找到了一个类似的例子,你不知道如何适应它吗?@MattiVirkkunen是的,我不知道如何改变它。你知道这段代码是如何开始的吗?还是你只是复制和粘贴?如果您通读并理解了代码,您将知道如何调整它,因为它已经在做您想要做的事情了。为此作业添加外部依赖项是很有意义的,因为过时的java.util.Calendar类对它的内置支持设计得很差。我当然会选择,这样我就可以使用。Joda Time主页上说:“请注意,Joda Time被认为是一个基本上已“完成”的项目。没有计划进行重大的增强。如果使用Java SE 8,请迁移到Java.Time JSR-310。”重复的:和。请在发布前彻底搜索堆栈溢出。