String timeStart = "2016-12-11";
String timeEnd = "2016-12-20";
已知两个日期,怎么循环出 [timeStart - timeEnd] 的所有日期,包括开始和结束时间。
并存入一个List<String>的集合中
String timeStart = "2016-12-11";
String timeEnd = "2016-12-20";
已知两个日期,怎么循环出 [timeStart - timeEnd] 的所有日期,包括开始和结束时间。
并存入一个List<String>的集合中
思路就是这样:
public static List<Integer> getYear(int startYear,int endYear) {
List<Integer> years = new ArrayList<Integer>();
while (startYear <= endYear) {
years.add(startYear);
startYear++;
}
return years;
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
Date begin = sdf.parse("2016-12-11");
Date end = sdf.parse("2016-12-20");
List<String> l = new ArrayList<String>();
Calendar cal = Calendar.getInstance();
while (begin.before(end)) {
l.add(sdf.format(begin));
cal.setTime(begin);
cal.add(Calendar.DAY_OF_MONTH, 1);
begin = cal.getTime();
}
for(String s:l){
System.out.println(s);
}
} catch (ParseException e) {
e.printStackTrace();
}
你需要Apache的lang 包,有如下api
static Date addDays(Date date, int amount) 返回一个date 时间对象 添加 amount 天 后的新的Date 对象
static Date addHours(Date date, int amount) 返回一个date 时间对象 添加 amount h 后的新的Date 对象
static Date addMilliseconds(Date date, int amount) 返回一个date 时间对象 添加 amount 毫秒 后的新的Date 对象
static Date addMinutes(Date date, int amount) 返回一个date 时间对象 添加 amount 分钟 后的新的Date 对象
static Date addMonths(Date date, int amount) 返回一个date 时间对象 添加 amount 月 后的新的Date 对象
static Date addSeconds(Date date, int amount) 返回一个date 时间对象 添加 amount 秒 后的新的Date 对象
static Date addWeeks(Date date, int amount) 返回一个date 时间对象 添加 amount 周 后的新的Date 对象
static Date addYears(Date date, int amount) 返回一个date 时间对象 添加 amount 年 后的新的Date 对象
3 回答2.6k 阅读✓ 已解决
3 回答4.1k 阅读✓ 已解决
8 回答3.6k 阅读
4 回答2.8k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答2.5k 阅读✓ 已解决
3 回答1.7k 阅读✓ 已解决
哈哈,又是日期类问题,那我肯定建议你用Java8的新时间API了,而且你时间字符串还是这种格式
yyyy-MM-dd
,直接LocalDate.parse
方法就可以把字符串转化为LocalDate对象了再者你这涉及到一系列有规律的时间集合,那肯定要考虑Stream啦,用Stream构造你这个集合是非常方便的快捷的,以下是示例代码:
然后是测试代码:
下面是打印结果:
贼好用~~完美的优雅又易懂的Java8~哈哈