Tabla de contenido
2. La definición del método en la clase de herramienta.
1. Explicación detallada
// 获取当前日期
LocalDate now = LocalDate.now();
// 获取本周第一天
LocalDate firstDayOfWeek = now.minusDays(now.getDayOfWeek().getValue() - 1);
// 获取本周第一天的00:00时间
LocalDateTime weekStartDate = firstDayOfWeek.atStartOfDay();
// 获取本周最后一天
LocalDate lastDayOfWeek = now.plusDays(7 - now.getDayOfWeek().getValue());
// 获取本周最后一天的23:59:59时间
LocalDateTime weekEndDate = LocalDateTime.of(lastDayOfWeek, LocalTime.MAX);
// 输出
System.out.println("weekStartDate: " + weekStartDate);
System.out.println("weekEndDate: " + weekEndDate);
Lógica principal:
1. Obtenga la fecha actual ahora
2. Reste el valor del día de la semana actual menosDays(now.getDayOfWeek().getValue() - 1) de ahora para obtener el primer día de la semana
3. Sume 7 días al primer día y reste el valor del día de la semana actual plusDays(7 - now.getDayOfWeek().getValue()) para obtener el último día de la semana
4. Combine el tiempo para obtener la hora de inicio y finalización de la semana
2. Definición de método
/**
* 1. now.getDayOfWeek().getValue() 获取now这一天是这一周的第几天,会返回1-7。
* 2. now.minusDays(now.getDayOfWeek().getValue() - 1) 获取now这一周的第一天。
* 3. atStartOfDay() 获取那一天的00:00:00时间。
* @param now
* @return
*/
public static LocalDateTime getWeekBeginTime(LocalDate now) {
return now.minusDays(now.getDayOfWeek().getValue() - 1).atStartOfDay();
}
/**
* 1. now.getDayOfWeek().getValue() 同上,获取这一周的第几天。
* 2. 8 - now.getDayOfWeek().getValue() 计算出这一周的最后一天离now还有几天。
* 3. now.plusDays(8 - now.getDayOfWeek().getValue()) 获取这一周的最后一天。
* 4. LocalTime.MAX 获取23:59:59时间。
* @param now
* @return
*/
public static LocalDateTime getWeekEndTime(LocalDate now) {
return LocalDateTime.of(now.plusDays(8 - now.getDayOfWeek().getValue()), LocalTime.MAX);
}
De esta forma conviene obtener el rango horario de la semana en el que se encuentra la fecha de cualquier día.