Java获取两个时间段之间的每个年月或者月初的值

1. 求两个年月之间的月份,包含开始月份

复制代码
    /**
     * @param startMonth @example: "2016-01"
     * @param endMonth @example: "2019-11"
     * @return    两个时间之间的月份(含开始,结束)
     * @throws ParseException 
     */
    private List<String> getMonths(String startMonth,String endMonth) throws ParseException{
        LinkedList<String> months = new LinkedList<>();
        
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
        Calendar minCalender = Calendar.getInstance();
        Calendar maxCalender = Calendar.getInstance();
        
                // 设置开始月份
        minCalender.setTime(sdf.parse(startMonth));
        minCalender.set(minCalender.get(Calendar.YEAR), minCalender.get(Calendar.MONTH),1);
        
        maxCalender.setTime(sdf.parse(endMonth));
                // 设置日期,保证最后一个日期参数 大于 开始时间日历
        maxCalender.set(maxCalender.get(Calendar.YEAR), maxCalender.get(Calendar.MONTH),2);
        
        while (minCalender.before(maxCalender)) {
            months.add(sdf.format( minCalender.getTime() ));
            minCalender.add(Calendar.MONTH, 1);
        }
        return months;
    }
复制代码

2. 求两个年月之间的月份,包含开始月份,不含结束月份

复制代码
    /**
     * @param startMonth @example: "2016-01"
     * @param endMonth @example: "2019-11"
     * @return    两个时间之间的月份(含开始,不含结束)
     * @throws ParseException 
     */
    private List<String> getMonths(String startMonth,String endMonth) throws ParseException{
        LinkedList<String> months = new LinkedList<>();
        
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
        Calendar minCalender = Calendar.getInstance();
        Calendar maxCalender = Calendar.getInstance();
        
                // 设置开始月份
        minCalender.setTime(sdf.parse(startMonth));
                // 设置结束月份
        maxCalender.setTime(sdf.parse(endMonth));
        
        while (minCalender.before(maxCalender)) {
            months.add(sdf.format( minCalender.getTime() ));
            minCalender.add(Calendar.MONTH, 1);
        }
        return months;
    }
复制代码

 

posted @   南北12345678  阅读(445)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
点击右上角即可分享
微信分享提示