1、当前日期所在月的最后一天 精确到时分秒23:59:59
//日期格式化
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = new Date();
System.out.println(sdf.format(date));//2024-06-06 11:19:31
//设置calendar
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.HOUR_OF_DAY, 23);//设置小时
calendar.set(Calendar.MINUTE, 59);//设置分钟
calendar.set(Calendar.SECOND, 59);//设置秒
calendar.set(Calendar.MILLISECOND, 0);//设置毫秒
System.out.println("------当前日期所在月的最后一天 精确到时分秒23:59:59--------");
int actualMaximum = calendar.getActualMaximum(calendar.DAY_OF_MONTH);
calendar.set(Calendar.DAY_OF_MONTH, actualMaximum);
System.out.println(calendar.getTime());//打印:Sun Jun 30 23:59:59 CST 2024
System.out.println(sdf.format(calendar.getTime()));//2024-06-30 23:59:59
2、当前日期所在年的最后一天 精确到时分秒23:59:59
//设置calendar请看第一个案例 .......
System.out.println("------当前日期所在年的最后一天 精确到时分秒23:59:59--------");
int actualMaximum = calendar.getActualMaximum(calendar.DAY_OF_YEAR);
calendar.set(Calendar.DAY_OF_YEAR, actualMaximum);
System.out.println(calendar.getTime());//打印:Tue Dec 31 23:59:59 CST 2024
System.out.println(sdf.format(calendar.getTime()));//2024-12-31 23:59:59
3、当前日期所在周的最后一天(周六 +1天得到周日) 精确到时分秒23:59:59
//设置calendar请看第一个案例 .......
System.out.println("------当前日期所在周的最后一天(周六 +1天得到周日) 精确到时分秒23:59:59--------");
int actualMaximum = calendar.getActualMaximum(calendar.DAY_OF_WEEK);
calendar.set(Calendar.DAY_OF_WEEK, actualMaximum);//当前周的最后一天(按照西方日期最后一天的日期是周六)
calendar.add(calendar.DATE,1);// +1天,等于当前日期的周日,这句话不写打印的是当前日期的周六
System.out.println(calendar.getTime());//打印的是周日:Sun Jun 09 23:59:59 CST 2024
System.out.println(sdf.format(calendar.getTime()));//2024-06-09 23:59:59