formato - manejo de horas en java
¿Cómo obtener el final del día cuando se le da una fecha local? (3)
Aquí hay algunas alternativas, dependiendo de lo que necesite:
LocalDate.now().atTime(23, 59, 59); //23:59:59
LocalDate.now().atTime(LocalTime.MAX); //23:59:59.999999999
Pero no hay un método incorporado.
Como comentó @JBNizet, si desea crear un intervalo, también puede usar un intervalo hasta la medianoche, exclusivo.
¿Cómo obtener el final del día cuando se le da una fecha local?
Podría conseguirlo haciendo
LocalDateTime.of(LocalDate.now(), LocalTime.of(23, 59, 59));
Pero, ¿hay un método equivalente ''atStartOfDay'' para el final del día?
LocalDate.now().atStartOfDay();
LocalDate.now().atEndOfDay(); //doesn''t work
Comienza el día siguiente y resta 1 segundo. Esto debería funcionar para usted. :
public static void main(String[] args) {
LocalDate date = LocalDate.now();
LocalDateTime dt = date.atStartOfDay().plusDays(1).minusSeconds(1);
System.out.println(dt);
}
O / P:
2016-04-04T23:59:59
Estas son las variantes disponibles en LocalTime
, aviso MIDNIGHT
y MIN
son iguales.
LocalDate.now().atTime(LocalTime.MIDNIGHT); //00:00:00.000000000
LocalDate.now().atTime(LocalTime.MIN); //00:00:00.000000000
LocalDate.now().atTime(LocalTime.NOON); //12:00:00.000000000
LocalDate.now().atTime(LocalTime.MAX); //23:59:59.999999999
Como referencia, esta es la implementación en java.time.LocalTime
/**
* Constants for the local time of each hour.
*/
private static final LocalTime[] HOURS = new LocalTime[24];
static {
for (int i = 0; i < HOURS.length; i++) {
HOURS[i] = new LocalTime(i, 0, 0, 0);
}
MIDNIGHT = HOURS[0];
NOON = HOURS[12];
MIN = HOURS[0];
MAX = new LocalTime(23, 59, 59, 999_999_999);
}