localdatetime example ejemplo convertir java java-8 java-time

ejemplo - localdatetime java example



Java 8 LocalDateTime hoy a una hora especĂ­fica (5)

Eso funciona

LocalDateTime.now().withHour(3).withMinute(0).withSecond(0);

¿Existe una forma mejor / más fácil de construir LocalDateTime objeto LocalDateTime que represente hoy a las 6 AM que esto?

LocalDateTime todayAt6 = LocalDateTime.now().withHour(6).withMinute(0).withSecond(0).withNano(0);

De alguna manera no me gusta lidiar con los minutos / segundos / nano cuando todo lo que quiero decir es now().withHours() .


La respuesta aceptada es buena. También puedes crear tu propio clock para hacer esto:

Clock clock = Clock.tick(Clock.systemDefaultZone(), Duration.ofHours(1)); LocalDateTime dt = LocalDateTime.now(clock);

Esta puede ser una opción útil si se usa repetidamente, porque el reloj se puede almacenar en una variable estática:

public static final Clock CLOCK = Clock.tick(Clock.systemDefaultZone(), Duration.ofHours(1)); LocalDateTime dt = LocalDateTime.now(CLOCK);


Otra alternativa (especialmente si desea cambiar un LocalDateTime ya existente) es usar el método with() .

Acepta un TemporalAdjuster como parámetro. Y de acuerdo con javadoc , pasar un LocalTime a este método hace exactamente lo que necesita:

Las clases LocalDate y LocalTime implementan TemporalAdjuster, por lo que este método se puede usar para cambiar la fecha, la hora o el desplazamiento:

result = localDateTime.with (fecha);
result = localDateTime.with (time);

Entonces, el código será:

LocalDateTime todayAt6 = LocalDateTime.now().with(LocalTime.of(6, 0));


Una alternativa a LocalDate.now().atTime(6, 0) es:

import java.time.temporal.ChronoUnit; LocalDateTime.now().truncatedTo(ChronoUnit.DAYS).withHour(6);


LocalDate tiene varios métodos de atTime sobrecargado, como este , que toma dos argumentos (hora del día y minuto):

LocalDateTime todayAt6 = LocalDate.now().atTime(6, 0);