今天Java 8 LocalDateTime在特定时刻

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

另一种替代方法(特别是如果您想更改已经存在LocalDateTimewith()方法)是使用方法

它接受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)


flu*_*rdy 5

一个替代方案LocalDate.now().atTime(6, 0)是:

import java.time.temporal.ChronoUnit;

LocalDateTime.now().truncatedTo(ChronoUnit.DAYS).withHour(6);
Run Code Online (Sandbox Code Playgroud)


Bru*_*uno 5

那个有效

LocalDateTime.now().withHour(3).withMinute(0).withSecond(0);
Run Code Online (Sandbox Code Playgroud)