有什么错误请大佬指正,新人没有什么开发经验,轻虐
给定两个时间戳:
start_date: 1530374400 时间: 2018/7/1/
end_date: 1565193600 时间: 2019/8/8
获取两个时间戳中包含的年份和月份
2018-7-1 至 2019-8-8 应该有两个年份 分别对应各自的日期
2018年 —> 7,8,9,10,11,12 月
2019年 —> 1,2,3,4,5,6,7,8 月
代码:
public void test() {
// 创建结果集
HashMap<Integer, List<Integer>> result= new HashMap<>();
Calendar start = Calendar.getInstance();
Calendar end = Calendar.getInstance();
// 时间: 2018/7/1/
start.setTimeInMillis(1530374400000L);
// 2019/8/8
end.setTimeInMillis(1565193600000L);
// 创建月份集合 最后要放入到result对应year的value中
ArrayList<Integer> monthList = null;
// 创建累加calendar
Calendar curr = start;
// 如果curr 在 end 日期之前 返回true
while (curr.before(end)) {
// 获取年
int year = curr.get(Calendar.YEAR);
// 如果在result中不包含这个year的key 则创建 一个新的monthList用来存放month
if (!result.containsKey(year)) {
monthList = new ArrayList<>();
result.put(year, monthList);
}
// 将 同一年的 month 放入 monthList中 关于 month+1可以产看下边的链接
monthList.add(curr.get(Calendar.MONTH) + 1);
// curr 月份 + 1
curr.add(Calendar.MONTH, 1);
// 如果遍历的下一个年大于当前的年 或者 当前遍历的等于end了 则将monthList放入result中
if (curr.get(Calendar.YEAR) > year || curr.equals(end)) {
result.put(year, monthList);
}
}
}
结果
month + 1 可以参看这篇文章: https://blog.csdn.net/zooop/article/details/48678241