Java 如何从某个日期获取日期列表?
我有两个变量: 起始日期-例如2018年4月29日 多少天-例如30天 我想得到从2018年4月29日起30天的清单。你能告诉我怎么做吗?我发现只有两天可以约会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
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。”重复的:和。请在发布前彻底搜索堆栈溢出。