Java获取本月第一天最后一天,上个月下个月、上月最后一天下月第一天

  1. /** 
  2.      * 获取当前时间 
  3.      *  
  4.      * @param args 
  5.      */  
  6.     public static String getNowTime() {  
  7.         Calendar cal = Calendar.getInstance();  
  8.         SimpleDateFormat dft = new SimpleDateFormat("yyyyMMdd");  
  9.         String lastMonth = dft.format(cal.getTime());  
  10.         return lastMonth;  
  11.     }  
  12.   
  13.     /** 
  14.      * 判断当天是否为本月第一天 
  15.      *  
  16.      * @return 
  17.      */  
  18.     public static boolean isFirstDayOfMonth() {  
  19.         boolean flag = false;  
  20.         Calendar calendar = Calendar.getInstance();  
  21.         int today = calendar.get(calendar.DAY_OF_MONTH);  
  22.         if (1 == today) {  
  23.             flag = true;  
  24.         }  
  25.         return flag;  
  26.     }  
  27.   
  28.     /** 
  29.      * 获取当前月份最后一天 
  30.      *  
  31.      * @param date 
  32.      * @return 
  33.      * @throws ParseException 
  34.      */  
  35.     public static String getMaxMonthDate() {  
  36.         SimpleDateFormat dft = new SimpleDateFormat("yyyyMMdd");  
  37.         Calendar calendar = Calendar.getInstance();  
  38.         calendar.setTime(new Date());  
  39.         // calendar.add(Calendar.MONTH, -1);  
  40.         calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));  
  41.         return dft.format(calendar.getTime());  
  42.     }  
  43.   
  44.     /** 
  45.      *  
  46.      * 描述:获取下一个月的第一天. 
  47.      *  
  48.      * @return 
  49.      */  
  50.     public static String getPerFirstDayOfMonth() {  
  51.         SimpleDateFormat dft = new SimpleDateFormat("yyyyMMdd");  
  52.         Calendar calendar = Calendar.getInstance();  
  53.         calendar.add(Calendar.MONTH, 1);  
  54.         calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMinimum(Calendar.DAY_OF_MONTH));  
  55.         return dft.format(calendar.getTime());  
  56.     }  
  57.   
  58.     /** 
  59.      *  
  60.      * 描述:获取上个月的最后一天. 
  61.      *  
  62.      * @return 
  63.      */  
  64.     public static String getLastMaxMonthDate() {  
  65.         SimpleDateFormat dft = new SimpleDateFormat("yyyyMMdd");  
  66.         Calendar calendar = Calendar.getInstance();  
  67.         calendar.setTime(new Date());  
  68.         calendar.add(Calendar.MONTH, -1);  
  69.         calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));  
  70.         return dft.format(calendar.getTime());  
  71.     }  
  72.   
  73.     /** 
  74.      * 获取上一个月 
  75.      *  
  76.      * @return 
  77.      */  
  78.     public static String getLastMonth() {  
  79.         Calendar cal = Calendar.getInstance();  
  80.         cal.add(cal.MONTH, -1);  
  81.         SimpleDateFormat dft = new SimpleDateFormat("yyyyMM");  
  82.         String lastMonth = dft.format(cal.getTime());  
  83.         return lastMonth;  
  84.     }  
  85.   
  86.     /** 
  87.      *  
  88.      * 描述:获取下一个月. 
  89.      *  
  90.      * @return 
  91.      */  
  92.     public static String getPreMonth() {  
  93.         Calendar cal = Calendar.getInstance();  
  94.         cal.add(cal.MONTH, 1);  
  95.         SimpleDateFormat dft = new SimpleDateFormat("yyyyMM");  
  96.         String preMonth = dft.format(cal.getTime());  
  97.         return preMonth;  
  98.     }  
  99.   
  100. // 是否是最后一天  
  101.     public static boolean isLastDayOfMonth() {  
  102.         boolean flag = false;  
  103.         if (StringUtils.isNotBlank(getNowTime()) && StringUtils.isNotBlank(getMaxMonthDate()) && StringUtils.equals(getNowTime(), getMaxMonthDate())) { // getMaxMonthDate().equals(getNowTime())  
  104.             flag = true;  
  105.         }  
  106.         return flag;  
  107.     }  
  108.       
  109.     /** 
  110.      * 获取任意时间的下一个月 
  111.      * 描述:<描述函数实现的功能>. 
  112.      * @param repeatDate 
  113.      * @return 
  114.      */  
  115.     public static String getPreMonth(String repeatDate) {  
  116.         String lastMonth = "";  
  117.         Calendar cal = Calendar.getInstance();  
  118.         SimpleDateFormat dft = new SimpleDateFormat("yyyyMM");  
  119.         int year = Integer.parseInt(repeatDate.substring(04));  
  120.         String monthsString = repeatDate.substring(46);  
  121.         int month;  
  122.         if ("0".equals(monthsString.substring(01))) {  
  123.             month = Integer.parseInt(monthsString.substring(12));  
  124.         } else {  
  125.             month = Integer.parseInt(monthsString.substring(02));  
  126.         }  
  127.         cal.set(year,month,Calendar.DATE);  
  128.         lastMonth = dft.format(cal.getTime());  
  129.         return lastMonth;  
  130.     }  
  131.       
  132.     /** 
  133.      * 获取任意时间的上一个月 
  134.      * 描述:<描述函数实现的功能>. 
  135.      * @param repeatDate 
  136.      * @return 
  137.      */  
  138.     public static String getLastMonth(String repeatDate) {  
  139.         String lastMonth = "";  
  140.         Calendar cal = Calendar.getInstance();  
  141.         SimpleDateFormat dft = new SimpleDateFormat("yyyyMM");  
  142.         int year = Integer.parseInt(repeatDate.substring(04));  
  143.         String monthsString = repeatDate.substring(46);  
  144.         int month;  
  145.         if ("0".equals(monthsString.substring(01))) {  
  146.             month = Integer.parseInt(monthsString.substring(12));  
  147.         } else {  
  148.             month = Integer.parseInt(monthsString.substring(02));  
  149.         }  
  150.         cal.set(year,month-2,Calendar.DATE);  
  151.         lastMonth = dft.format(cal.getTime());  
  152.         return lastMonth;  
  153.     }  
  154.      //  
  155.     /** 
  156.      * 获取任意时间的月的最后一天 
  157.      * 描述:<描述函数实现的功能>. 
  158.      * @param repeatDate 
  159.      * @return 
  160.      */  
  161.     private static String getMaxMonthDate(String repeatDate) {  
  162.         SimpleDateFormat dft = new SimpleDateFormat("yyyyMMdd");  
  163.         Calendar calendar = Calendar.getInstance();  
  164.         try {  
  165.             if(StringUtils.isNotBlank(repeatDate) && !"null".equals(repeatDate)){  
  166.                 calendar.setTime(dft.parse(repeatDate));  
  167.             }  
  168.         } catch (ParseException e) {  
  169.             e.printStackTrace();  
  170.         }  
  171.         // calendar.add(Calendar.MONTH, -1);  
  172.         calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));  
  173.         return dft.format(calendar.getTime());  
  174.     }  
  175.       
  176.     /** 
  177.      * 获取任意时间的月第一天 
  178.      * 描述:<描述函数实现的功能>. 
  179.      * @param repeatDate 
  180.      * @return 
  181.      */  
  182.     private static String getMinMonthDate(String repeatDate){  
  183.         SimpleDateFormat dft = new SimpleDateFormat("yyyyMMdd");  
  184.         Calendar calendar = Calendar.getInstance();  
  185.         try {  
  186.             if(StringUtils.isNotBlank(repeatDate) && !"null".equals(repeatDate)){  
  187.                 calendar.setTime(dft.parse(repeatDate));  
  188.             }  
  189.         } catch (ParseException e) {  
  190.             e.printStackTrace();  
  191.         }  
  192.         // calendar.add(Calendar.MONTH, -1);  
  193.         calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMinimum(Calendar.DAY_OF_MONTH));  
  194.        return dft.format(calendar.getTime());          
  195.     }  
  196. /** 
  197.      * 不论是当前时间,还是历史时间  皆是时间点的前天 
  198.      * repeatDate  任意时间 
  199.      */  
  200.     public static String getModify2DaysAgo(String repeatDate) {  
  201.         Calendar cal = Calendar.getInstance();  
  202.         String daysAgo = "";  
  203.         SimpleDateFormat dft = new SimpleDateFormat("yyyyMMdd");  
  204.         if (repeatDate == null || "".equals(repeatDate)) {  
  205.             cal.set(Calendar.DATE, cal.get(Calendar.DATE) - 2);  
  206.   
  207.         } else {  
  208.             int year = Integer.parseInt(repeatDate.substring(04));  
  209.             String monthsString = repeatDate.substring(46);  
  210.             int month;  
  211.             if ("0".equals(monthsString.substring(01))) {  
  212.                 month = Integer.parseInt(monthsString.substring(12));  
  213.             } else {  
  214.                 month = Integer.parseInt(monthsString.substring(02));  
  215.             }  
  216.             String dateString = repeatDate.substring(68);  
  217.             int date;  
  218.             if ("0".equals(dateString.subSequence(01))) {  
  219.                 date = Integer.parseInt(dateString.substring(12));  
  220.             } else {  
  221.                 date = Integer.parseInt(dateString.substring(02));  
  222.             }  
  223.             cal.set(year, month-1, date - 1);  
  224.             System.out.println(dft.format(cal.getTime()));  
  225.         }  
  226.         daysAgo = dft.format(cal.getTime());  
  227.         return daysAgo;  
  228.     }  
  229.       
  230.     /** 
  231.      * 不论是当前时间,还是历史时间  皆是时间点的T-N天 
  232.     * repeatDate 任意时间    param 数字 可以表示前几天 
  233.      */  
  234.     public static String getModifyNumDaysAgo(String repeatDate,int param) {  
  235.         Calendar cal = Calendar.getInstance();  
  236.         String daysAgo = "";  
  237.         SimpleDateFormat dft = new SimpleDateFormat("yyyyMMdd");  
  238.         if (repeatDate == null || "".equals(repeatDate)) {  
  239.             cal.set(Calendar.DATE, cal.get(Calendar.DATE) - param);  
  240.   
  241.         } else {  
  242.             int year = Integer.parseInt(repeatDate.substring(04));  
  243.             String monthsString = repeatDate.substring(46);  
  244.             int month;  
  245.             if ("0".equals(monthsString.substring(01))) {  
  246.                 month = Integer.parseInt(monthsString.substring(12));  
  247.             } else {  
  248.                 month = Integer.parseInt(monthsString.substring(02));  
  249.             }  
  250.             String dateString = repeatDate.substring(68);  
  251.             int date;  
  252.             if ("0".equals(dateString.subSequence(01))) {  
  253.                 date = Integer.parseInt(dateString.substring(12));  
  254.             } else {  
  255.                 date = Integer.parseInt(dateString.substring(02));  
  256.             }  
  257.             cal.set(year, month-1, date - param+1);  
  258.             System.out.println(dft.format(cal.getTime()));  
  259.         }  
  260.         daysAgo = dft.format(cal.getTime());  
  261.         return daysAgo;  
  262.     }  

猜你喜欢

转载自blog.csdn.net/clyhuli/article/details/80030378