哈哈,又是日期类问题,那我肯定建议你用Java8的新时间API了,而且你时间字符串还是这种格式yyyy-MM-dd,直接LocalDate.parse方法就可以把字符串转化为LocalDate对象了
再者你这涉及到一系列有规律的时间集合,那肯定要考虑Stream啦,用Stream构造你这个集合是非常方便的快捷的,以下是示例代码:
/**
* 收集起始时间到结束时间之间所有的时间并以字符串集合方式返回
* @param timeStart
* @param timeEnd
* @return
*/
public static List collectLocalDates(String timeStart, String timeEnd){
return collectLocalDates(LocalDate.parse(timeStart), LocalDate.parse(timeEnd));
}
/**
* 收集起始时间到结束时间之间所有的时间并以字符串集合方式返回
* @param start
* @param end
* @return
*/
public static List collectLocalDates(LocalDate start, LocalDate end){
// 用起始时间作为流的源头,按照每次加一天的方式创建一个无限流
return Stream.iterate(start, localDate -> localDate.plusDays(1))
// 截断无限流,长度为起始时间和结束时间的差+1个
.limit(ChronoUnit.DAYS.between(start, end) + 1)
// 由于最后要的是字符串,所以map转换一下
.map(LocalDate::toString)
// 把流收集为List
.collect(Collectors.toList());
}
然后是测试代码:
String timeStart = "2016-12-11";
String timeEnd = "2016-12-20";
collectLocalDates(timeStart, timeEnd).forEach(System.out::println);
下面是打印结果:
贼好用~~完美的优雅又易懂的Java8~哈哈