如何从某个日期获取日期列表?
我有两个变量:
-
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主页