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);