Jan*_*anM 24 java java-8 java-time
是否有更好/更简单的方法来构建LocalDateTime今天早上6点的对象?
LocalDateTime todayAt6 = LocalDateTime.now().withHour(6).withMinute(0).withSecond(0).withNano(0);
Run Code Online (Sandbox Code Playgroud)
不知怎的,我不喜欢处理分钟/秒/纳米时我想说的是now().withHours().
ass*_*ias 35
LocalDate有各种重载atTime方法,比如这个,它有两个参数(一天一小时和一小时):
LocalDateTime todayAt6 = LocalDate.now().atTime(6, 0);
Run Code Online (Sandbox Code Playgroud)
小智 5
另一种替代方法(特别是如果您想更改已经存在LocalDateTime的with()方法)是使用方法。
它接受a TemporalAdjuster作为参数。根据javadoc,将a传递LocalTime给此方法完全可以满足您的需要:
LocalDate和LocalTime类实现TemporalAdjuster,因此可以使用此方法更改日期,时间或偏移量:
结果= localDateTime.with(date);
结果= localDateTime.with(time);
因此,代码将是:
LocalDateTime todayAt6 = LocalDateTime.now().with(LocalTime.of(6, 0));
Run Code Online (Sandbox Code Playgroud)
一个替代方案LocalDate.now().atTime(6, 0)是:
import java.time.temporal.ChronoUnit;
LocalDateTime.now().truncatedTo(ChronoUnit.DAYS).withHour(6);
Run Code Online (Sandbox Code Playgroud)
那个有效
LocalDateTime.now().withHour(3).withMinute(0).withSecond(0);
Run Code Online (Sandbox Code Playgroud)