Java根据传入的两个日期获取其中的所有日期
注:
1、代码借助Hutool实现,需要引入hutool的pom。
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.7.16</version>
</dependency>
2、根据传入两个日期返回其中所有的日期(可根据type选年、月、日,返回数据包含头和尾)。
public ArrayList<String> getAllDateByParamDate(String startDate, String endDate, String type) {
if (!"year".equals(type) && !"month".equals(type) && !"day".equals(type)) {
return null;
}
DateTime parseStartDate = DateUtil.parse(startDate);
DateTime parseEndDate = DateUtil.parse(endDate);
// 存储所有日期的list
ArrayList<String> list = new ArrayList<>();
// 获取所有年份
if (type.equals("year")) {
list.add(parseStartDate.toString("yyyy"));
DateTime endDateOffset = parseEndDate.offsetNew(DateField.YEAR, -1);
while (parseStartDate.isBefore(endDateOffset)) {
DateTime stageDateTime = parseStartDate.offset(DateField.YEAR, 1);
list.add(stageDateTime.toString("yyyy"));
parseStartDate = stageDateTime;
}
} else if (type.equals("month")) {
// 获取所有月份
list.add(parseStartDate.toString("yyyy-MM"));
DateTime endDateOffset = parseEndDate.offsetNew(DateField.MONTH, -1);
while (parseStartDate.isBefore(endDateOffset)) {
DateTime stageDateTime = parseStartDate.offset(DateField.MONTH, 1);
list.add(stageDateTime.toString("yyyy-MM"));
parseStartDate = stageDateTime;
}
} else {
// 获取所有日期
list.add(parseStartDate.toString("yyyy-MM-dd"));
DateTime endDateOffset = parseEndDate.offsetNew(DateField.DAY_OF_MONTH, -1);
while (parseStartDate.isBeforeOrEquals(endDateOffset)) {
DateTime stageDateTime = parseStartDate.offset(DateField.DAY_OF_MONTH, 1);
list.add(stageDateTime.toString("yyyy-MM-dd"));
parseStartDate = stageDateTime;
}
}
// 返回数据
return list;
}