/**
* 获取指定日期上一个月的第一天
* @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();
}
}