Java 8 LocalDateTime 今天在特定时间

2022-09-01 00:26:55

有没有比这更好/更简单的方法来构造今天早上6点的对象?LocalDateTime

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

不知何故,我不喜欢处理分钟/秒/纳米,而我想说的只是。now().withHours()


答案 1

LocalDate有各种重载方法,例如这个,它需要两个参数(天中的小时和分钟):atTime

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

答案 2

另一种选择(特别是如果你想改变已经存在的)是使用with()方法LocalDateTime

它接受 a 作为参数。根据javadoc的说法,将a传递给此方法正是您需要的:TemporalAdjusterLocalTime

类 LocalDate 和 LocalTime 实现了 TemporalAdjuster,因此此方法可用于更改日期、时间或偏移量:

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

因此,代码将是:

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

推荐