java获取 上个月第一天和最后一天的 当前月第一天 最后一天 当前周第一天最后一天 上一周第一天 最后一天
/** * 获取指定日期上一个月的第一天 * @param date null 默认是当前日期 */ public static String getPreMonthFirstDate(Date date) { if(date==null){ date = new Date(); } SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd"); Calendar calendar=Calendar.getInstance(); calendar.setTime(date); calendar.add(Calendar.MONTH, -1); calendar.set(Calendar.DAY_OF_MONTH, 1); // System.out.println("上个月第一天:"+format.format(calendar.getTime())); return format.format(calendar.getTime()); } /** * 获取指定日期上一个月的最后一天 * @param date null 默认是当前日期 */ public static String getPreMonthLastDate(Date date){ if(date==null){ date = new Date(); } SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd"); Calendar calendar=Calendar.getInstance(); calendar.setTime(date); calendar.set(Calendar.DAY_OF_MONTH, 1); calendar.add(Calendar.DATE, -1); //System.out.println("上个月最后一天:"+sf.format(calendar.getTime())); return sf.format(calendar.getTime()); } /** * 当前月的第一天 * @return */ public static String getfirstDayOfCurMonth(){ //规定返回日期格式 SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd"); Calendar calendar=Calendar.getInstance(); Date theDate=calendar.getTime(); GregorianCalendar gcLast=(GregorianCalendar)Calendar.getInstance(); gcLast.setTime(theDate); //设置为第一天 gcLast.set(Calendar.DAY_OF_MONTH, 1); String day_first=sf.format(gcLast.getTime()); return day_first; } /** * 当前月的最后一天 * @return */ public static String getlastDayOfCurMonth(){ //获取Calendar Calendar calendar=Calendar.getInstance(); //设置日期为本月最大日期 calendar.set(Calendar.DATE, calendar.getActualMaximum(calendar.DATE)); //设置日期格式 SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd"); String ss=sf.format(calendar.getTime()); return ss; } /** * 得到本周一 周日的日期 * @return */ public static String[] getCurWeekFirstDayAndLastDay(){ Calendar cal = Calendar.getInstance(); String dateArray[] = new String[2]; /* 模拟其它日期进行测试 try { SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd"); cal.setTime(df.parse("2017-07-10")); //test }catch (Exception e){ e.printStackTrace();; } */ cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONDAY), cal.get(Calendar.DAY_OF_MONTH), 0, 0, 0); cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd"); String ss=sf.format(cal.getTime()); // System.out.println("本周第一天:"+ss); dateArray[0] = ss; cal.setTime(cal.getTime()); //第一天的时间 cal.add(Calendar.DAY_OF_WEEK, 6); ss=sf.format(cal.getTime()); // System.out.println("本周最后一天:"+ss); dateArray[1] = ss; return dateArray; } /** * 得到上周一 周日的日期 * @return */ public static String[] getPreWeekFirstDayAndLastDay(){ String dateArray[] = new String[2]; Calendar cal = Calendar.getInstance(); SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd"); /* 模拟其它日期进行测试 try { SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd"); cal.setTime(df.parse("2017-09-04")); //test 2017-09-03 2017-08-28 2017-09-10 }catch (Exception e){ e.printStackTrace();; } */ cal.setFirstDayOfWeek(Calendar.MONDAY);//将每周第一天设为星期一,默认是星期天 cal.add(Calendar.DATE, -1*7); cal.set(Calendar.DAY_OF_WEEK,Calendar.MONDAY); String ss=sf.format(cal.getTime()); dateArray[0] = ss; cal.setTime(cal.getTime()); //第一天的时间 cal.add(Calendar.DAY_OF_WEEK, 6); ss=sf.format(cal.getTime()); dateArray[1] = ss; return dateArray; } @Test public void test() { // getBeforeFirstMonthDate(new Date()); // getBeforeLastMonthDate(new Date()); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); try { // getBeforeFirstMonthDate(sdf.parse("2017-01-01")); // getBeforeLastMonthDate(sdf.parse("2017-01-01")); String a = getPreMonthFirstDate(sdf.parse("2017-08-01")); String b =getPreMonthLastDate(sdf.parse("2017-08-01")); a = getfirstDayOfCurMonth(); b= getlastDayOfCurMonth(); a = getPreMonthFirstDate(null); b = getPreMonthLastDate(null); String[] ab= getCurWeekFirstDayAndLastDay(); System.out.println(a+"==="+b); System.out.println("本周:"+ab[0]+" "+ab[1]); System.out.println("上周:"+getPreWeekFirstDayAndLastDay()[0] +" " +getPreWeekFirstDayAndLastDay()[1]); } catch (ParseException e) { e.printStackTrace(); } }