获取给定日期所在月份的第一天和最后一天(字符串也可以返回日期格式-清除注释)

/**
 * 获取给定日期所在月份的第一天和最后一天(字符串也可以返回日期格式-清除注释)
 * mon:0(当前月) mon:1(下一月) mon:2(下下月) mon:-1(上一月) mon:-2(上上月)...
 * @param date
 * @return
 */
public static Map<String, Object> convertMonthByDate(Date date, Integer mon) {
   Map<String, Object> map = new HashMap<String, Object>();
   SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
   Calendar calendar = Calendar.getInstance();
   calendar.setTime(date);
   calendar.add(Calendar.MONTH, 0 + mon);
   Date theDate = calendar.getTime();
   // 上个月第一天
   GregorianCalendar gcLast = (GregorianCalendar) Calendar.getInstance();
   gcLast.setTime(theDate);
   gcLast.set(Calendar.DAY_OF_MONTH, 1);
   String day_first = df.format(gcLast.getTime());
   // 上个月最后一天
   calendar.add(Calendar.MONTH, 1); // 加一个月
   calendar.set(Calendar.DATE, 1); // 设置为该月第一天
   calendar.add(Calendar.DATE, -1); // 再减一天即为上个月最后一天
   String day_last = df.format(calendar.getTime());
   SimpleDateFormat sdf = new SimpleDateFormat(" yyyy-MM-dd HH:mm:ss ");
   String str1 = day_first + " 00:00:00";
   String str2 = day_last + " 23:59:59";
       /*System.out.println(str1);
       System.out.println(str2);
       Date date1 = new Date();
       Date date2 = new Date();
       try {
            date1= sdf.parse(str1);
            date2= sdf.parse(str2);
       } catch (ParseException e) {
           e.printStackTrace();
       }*///注释部分可以转换成时间格式返回
   map.put("first", str1);
   map.put("last", str2);
   return map;
}

猜你喜欢

转载自blog.csdn.net/qq_36178165/article/details/85259885
今日推荐