我有两个变量:
-
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
的日期时间。 - 乔达时代主页