import java.time.LocalDate;
import java.time.LocalDateTime;
private static void testDay(LocalDateTime localDateTime){
minOfDay(localDateTime);maxOfDay(localDateTime);
minDayOfMonth(localDateTime);
maxDayOfMonth(localDateTime);
}
/**
* 检查某一年是否为闰年
* @param localDateTime
* @return
*/
private static boolean isLeapYear(LocalDateTime localDateTime){
LocalDate localDateOther = LocalDate.of(localDateTime.getYear(),2,28);
return isLeapYear(localDateOther);
}
private static boolean isLeapYear(LocalDate localDate){
LocalDate localDateNew = localDate.plusDays(1L);
int dayOfMonth = localDateNew.getDayOfMonth();
if(dayOfMonth == 29){
// 表明是闰年
return true;
}else {
if(dayOfMonth == 1){
// 表明不是闰年
return false;
}
}
return false;
}
/**
* 根据指定的参数组装数据
* @return
*/
private static LocalDateTime assemble(int year,int month,int day,int hour,int min,int second){
return LocalDateTime.of(year,month,day,hour,min,second);
}
private static void print(String functionName,LocalDateTime localDateTime){
StringBuilder sb = new StringBuilder(functionName);
sb.append(" : ");
sb.append(localDateTime);
sb.append(" : ");
sb.append(localDateTime.toInstant(ZoneOffset.of("+8")).toEpochMilli());
System.out.println(sb.toString());
}
/**
* 获取当前时间的开始时间
* @param localDateTime
*/
private static void minOfDay(LocalDateTime localDateTime){
LocalDate localDate = localDateTime.toLocalDate();
LocalDateTime localDateTimeNew = assemble(localDate.getYear(),localDate.getMonthValue(),localDate.getDayOfMonth(),0,0,0);
print("minOfDay",localDateTimeNew);
}
/**
* 获取当前时间的最大时间
* @param localDateTime
*/
private static void maxOfDay(LocalDateTime localDateTime){
LocalDate localDate = localDateTime.toLocalDate();
LocalDateTime localDateTimeNew = assemble(localDate.getYear(),localDate.getMonthValue(),localDate.getDayOfMonth(),23,59,59);
print("maxOfDay",localDateTimeNew);
}
/**
* 获取当前月份的开始时间
* @param localDateTime
*/
private static void minDayOfMonth(LocalDateTime localDateTime){
LocalDate localDate = localDateTime.toLocalDate();
LocalDateTime localDateTimeNew = assemble(localDate.getYear(),localDate.getMonthValue(),1,0,0,0);
print("minDayOfMonth",localDateTimeNew);
}
/**
* 获取当前月份的结束时间
* @param localDateTime
*/
private static void maxDayOfMonth(LocalDateTime localDateTime){
int monthLength = 0;
LocalDate localDate = localDateTime.toLocalDate();
if(isLeapYear(localDateTime)){
monthLength = localDate.getMonth().length(true);
}else {
monthLength = localDate.getMonth().length(false);
}
LocalDateTime localDateTimeNew = assemble(localDate.getYear(),localDate.getMonthValue(),monthLength,23,59,59);
print("maxDayOfMonth",localDateTimeNew);
}