Java 8 LocalDateTime今天特定时间
有没有比这更好/更简单的方法来构造表示今天上午6点的Java 8 LocalDateTime今天特定时间,java,java-8,java-time,Java,Java 8,Java Time,有没有比这更好/更简单的方法来构造表示今天上午6点的LocalDateTime对象 LocalDateTime todayAt6 = LocalDateTime.now().withHour(6).withMinute(0).withSecond(0).withNano(0); 不知何故,我不喜欢处理分/秒/纳米,因为我只想说now()。withHours()LocalDate有各种重载的atTime方法,例如,它需要两个参数(小时和分钟): 公认的答案是好的。您也可以创建自己的来执行此操作:
LocalDateTime
对象
LocalDateTime todayAt6 = LocalDateTime.now().withHour(6).withMinute(0).withSecond(0).withNano(0);
不知何故,我不喜欢处理分/秒/纳米,因为我只想说
now()。withHours()
LocalDate
有各种重载的atTime
方法,例如,它需要两个参数(小时和分钟):
公认的答案是好的。您也可以创建自己的来执行此操作:
Clock clock = Clock.tick(Clock.systemDefaultZone(), Duration.ofHours(1));
LocalDateTime dt = LocalDateTime.now(clock);
如果反复使用,这是一个有用的选项,因为时钟可以存储在静态变量中:
public static final Clock CLOCK = Clock.tick(Clock.systemDefaultZone(), Duration.ofHours(1));
LocalDateTime dt = LocalDateTime.now(CLOCK);
另一种选择(特别是如果您想更改现有的LocalDateTime
)是使用
它接受一个临时调整器
作为参数。根据,将LocalTime
传递给此方法正好满足您的需要:
LocalDate和LocalTime类实现了TemporalAdjuster,因此此方法可用于更改日期、时间或偏移量:结果=localDateTime.with(日期)
结果=localDateTime.with(时间) 因此,代码将是:
LocalDateTime todayAt6 = LocalDateTime.now().with(LocalTime.of(6, 0));
LocalDate.now().atTime(6,0)
的另一个替代方法是:
import java.time.temporal.ChronoUnit;
LocalDateTime.now().truncatedTo(ChronoUnit.DAYS).withHour(6);
行得通
LocalDateTime.now().withHour(3).withMinute(0).withSecond(0);
LocalDateTime.now().withHour(3).withMinute(0).withSecond(0);