项目中经常使用到获取日期所在当前周、月份第一天、最后一天以及指定日期前一周等信息,通过Calendar获取对应信息。
获取日期所在周的第一天和最后一天
public static void getWeek() {
//大写的MM代表月份,小写的mm代表分钟。
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String time = "2022-11-01 15:56:16";
Date date = new Date();
try{
date = sdf.parse(time);
}catch (ParseException e){
e.printStackTrace();
}
Calendar calendarWeek =Calendar.getInstance();
calendarWeek.setTime(date);//指定日期,要获得当前时间则直接new Date()
calendarWeek.add(Calendar.WEEK_OF_MONTH,0);//0当前周,-1前一周,1后一周,以此类推
calendarWeek.setFirstDayOfWeek(Calendar.MONDAY);
calendarWeek.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
System.out.println("日期所在周第一天:" + sdf.format(calendarWeek.getTime()));
calendarWeek.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
System.out.println("日期所在周最一天:" + sdf.format(calendarWeek.getTime()));
}
获取指定日期所在月份的第一天和最后一天
/**
* 获取日期所在月份的第一天和最后一天
*/
public static void getMonth() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String time = "2022-11-01 15:56:16";
Date date = new Date();
try{
date = sdf.parse(time);
}catch (ParseException e){
e.printStackTrace();
}
Calendar calendarMonth =Calendar.getInstance();
calendarMonth.setTime(date);
calendarMonth.add(Calendar.MONTH, 0);
calendarMonth.set(Calendar.DAY_OF_MONTH, calendarMonth.getActualMinimum(Calendar.DAY_OF_MONTH));
System.out.println("月份第一天:" + sdf.format(calendarMonth.getTime()));
calendarMonth.set(Calendar.DAY_OF_MONTH, calendarMonth.getActualMaximum(Calendar.DAY_OF_MONTH));
System.out.println("月份最后一天:" + sdf.format(calendarMonth.getTime()));
}
获取指定日期所在前一周所有时间
/**
* 获取指定日期所在前一周所有时间
*/
public static void getDateInfo() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String time = "2022-11-01 15:56:16";
Calendar calendar = new GregorianCalendar();
Date date = new Date();
try{
date = sdf.parse(time);
}catch (ParseException e){
e.printStackTrace();
}
List<String> dateList = new ArrayList<>();
calendar.setTime(date);
calendar.set(Calendar.HOUR_OF_DAY,0);
calendar.set(Calendar.MINUTE,0);
calendar.set(Calendar.SECOND,0);
Date dateNew = calendar.getTime();
calendar.setTime(dateNew);
Calendar calendar2 = new GregorianCalendar();
calendar2.setTime(dateNew);
calendar2.add(Calendar.DAY_OF_MONTH,-6);
while(calendar2.before(calendar)){
String eachDate = sdf.format(calendar2.getTime());
calendar2.add(Calendar.DAY_OF_MONTH,1);
dateList.add(eachDate);
}
dateList.add(sdf.format(dateNew));
}
因篇幅问题不能全部显示,请点此查看更多更全内容