zoukankan      html  css  js  c++  java
  • 获取两个日期之间的月份 (具体月份)一个是包含头尾 一个不包含头尾

    最近再做一个项目 要计算连个月之间的相差的月份 网上特别多的是计算相差月份数 相差几个月 这个就不贴出来了 一百度全是的 完了之后就是相差月份详细的每个月不包括头尾的 比如计算 2018-12-12-2019-03-31相差的月份是  2019-01 02 "并没有算出 201812 和2019 03月份代码如下:

    Calendar c1 = Calendar.getInstance();
            Calendar c2 = Calendar.getInstance();
            c1.set(2014, 9, 30);
            c2.setTime(new
    
                    Date());
            System.out.println(c1.get(Calendar.YEAR) + " " + c1.get(Calendar.MONTH));
            while (c1.before(c2))
    
            {
                int m = c1.get(Calendar.MONTH) + 1;
                System.out.println(c1.get(Calendar.YEAR) + " " + (c1.get(Calendar.MONTH) + 1));
                c1.add(Calendar.MONTH, 1);
            }
            System.out.println(c1.get(Calendar.YEAR) + " " + (c1.get(Calendar.MONTH) + 1));

    这个似乎第一个输出和第二输出  是包含头尾的 但是如果输入相同的日期 ,理想的情况只需要输出一个月份就行 但是实际会输出俩个 

    所有有了以下的代码:

    Calendar c1 = Calendar.getInstance();
            Calendar c2 = Calendar.getInstance();
            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
            c1.set(2018, 11, 1);
            c2.set(2019, 06, 30);
            String time = "";
            String time2 = "";
            Integer i = c1.get(Calendar.MONTH);
    
            StringBuffer month = new StringBuffer("0");
            StringBuffer mon = new StringBuffer("0");
            if (i == 0) {
                i = 12;
                time = String.valueOf(c1.get(Calendar.YEAR) - 1) + "" + i;
            } else if (String.valueOf(i).length() < 2) {
                month.append(i + "");
                time = String.valueOf(c1.get(Calendar.YEAR)) + month + "";
            } else {
                time = String.valueOf(c1.get(Calendar.YEAR)) + "" + String.valueOf(c1.get(Calendar.MONTH));
            }
            if (String.valueOf(c2.get(Calendar.MONTH)).length() < 2) {
                mon.append(c2.get(Calendar.MONTH));
                time2 = String.valueOf(c2.get(Calendar.YEAR)) + mon + "";
            } else {
                time2 = String.valueOf(c2.get(Calendar.YEAR)) + "" + String.valueOf(c2.get(Calendar.MONTH));
            }
            while (Integer.valueOf(time2) >= Integer.valueOf(time)) {
                System.out.println(time);
                month = new StringBuffer("0");
                mon = new StringBuffer("0");
                i = c1.get(Calendar.MONTH) + 1;
                if (String.valueOf(i).length() < 2) {
                    month.append(i + "");
                    time = String.valueOf(c1.get(Calendar.YEAR)) + month + "";
                } else {
                    time = String.valueOf(c1.get(Calendar.YEAR)) + "" + String.valueOf(c1.get(Calendar.MONTH) + 1);
                }
                if (String.valueOf(c2.get(Calendar.MONTH)).length() < 2) {
                    mon.append(c2.get(Calendar.MONTH));
                    time2 = String.valueOf(c2.get(Calendar.YEAR)) + mon + "";
                } else {
                    time2 = String.valueOf(c2.get(Calendar.YEAR)) + "" + String.valueOf(c2.get(Calendar.MONTH));
                }
                c1.add(Calendar.MONTH, 1);
            }
            
        }

    最后输出:

    201811,

    201812,

    201901,

    201902

    201903,

    201904,

    201905,

    201906,

    看上去很多 很蠢但是这个解决了我想要的数据  如果有更好的方法,请多多指教

  • 相关阅读:
    Mybatis—动态sql拼接问题
    小白用Mac
    JSP总结(jsp/EL表达式/核心标签)
    Spring定时任务配置
    通过简单示例来理解什么是机器学习
    在jupyter notebook中同时安装python2和python3
    Python读取和处理文件后缀为".sqlite"的数据文件
    Python:Anaconda安装虚拟环境到指定路径
    TIOBE:全球编程语言最新排名(Kotlin排名进入前50名)
    Python:一篇文章掌握Numpy的基本用法
  • 原文地址:https://www.cnblogs.com/blackCatFish/p/11785876.html
Copyright © 2011-2022 走看看