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,

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

  • 相关阅读:
    取石子(斐波那契博弈)
    Kindergarten(网络流解法)
    最大团的一些定理
    Escape(多记一个方向状态的BFS)迷宫逃脱
    网络流的一些定理
    线段树维护动态连续子段HDU1540
    最大流Dinic(模板)
    MCMF最大流最小割(模板)Dijkstra负权优化
    Exchanging Gifts--2019CCPC哈尔滨 E题
    A<=B的前提下全排列A使答案尽量大
  • 原文地址:https://www.cnblogs.com/blackCatFish/p/11785876.html
Copyright © 2011-2022 走看看