Java获取某年某月的第一天和最后一天

/**
         * 获取某年某月的最后一天
         * @return 
         *
         */
        public static Date getYearLastDayOfMonth(int year,int month)
        {
            int year1 = year;  //
            int month1 = month; //
            Calendar cal = Calendar.getInstance();
            // 设置年份
            cal.set(Calendar.YEAR, year1);
            // 设置月份
            // cal.set(Calendar.MONTH, month - 1);
            cal.set(Calendar.MONTH, month1); //设置当前月的上一个月
            // 获取某月最大天数
            //int lastDay = cal.getActualMaximum(Calendar.DATE);
            int lastDay = cal.getMinimum(Calendar.DATE); //获取月份中的最小值,即第一天
            // 设置日历中月份的最大天数
            //cal.set(Calendar.DAY_OF_MONTH, lastDay);
            cal.set(Calendar.DAY_OF_MONTH, lastDay - 1); //上月的第一天减去1就是当月的最后一天
            // 格式化日期
            /*SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            System.out.println(sdf.format(cal.getTime()));*/
            return cal.getTime();
        } 
        
        /**
         * 获取某年某月的第一天
         * @param year
         * @param month
         * @return
         */
        public static Date getFisrtDayOfMonth(int year,int month)
        {
            Calendar cal = Calendar.getInstance();
            //设置年份
            cal.set(Calendar.YEAR,year);
            //设置月份
            cal.set(Calendar.MONTH, month-1);
            //获取某月最小天数
            int firstDay = cal.getActualMinimum(Calendar.DAY_OF_MONTH);
            //设置日历中月份的最小天数
            cal.set(Calendar.DAY_OF_MONTH, firstDay);
            //格式化日期
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            String firstDayOfMonth = sdf.format(cal.getTime());
            System.out.println(firstDayOfMonth);  
            return cal.getTime();
        }  
    public static void main(String[] args) throws ParseException, AppException {
          Calendar calendar = Calendar.getInstance();
          // 获取当前年
          int year = calendar.get(Calendar.YEAR); 
          //System.out.println(getLastDayOfMonth(2022,1));
          System.out.println(DateFormatTools.getFisrtDayOfMonth(2022,2));
          DateFormatTools.getYearLastDayOfMonth(2022,2);
          //System.out.println(getYearFirst(2022));
      }

输出:

 

 

PS:2月份获取的最后一天日期不对,抱歉,已改正。
修改为:用当前月的上个月的第一天减去1就是当月的最后一天。

  

posted @ 2022-03-30 15:09  Ferocious  阅读(2045)  评论(0编辑  收藏  举报