给定LocalDate时如何获得当天的结束?

给定LocalDate时如何获得当天的结束?

我可以做到这一点

LocalDateTime.of(LocalDate.now(), LocalTime.of(23, 59, 59)); 

但是在一天结束时是否有相同的’atStartOfDay’方法?

 LocalDate.now().atStartOfDay(); LocalDate.now().atEndOfDay(); //doesn't work 

以下是一些替代方案,具体取决于您的需求:

 LocalDate.now().atTime(23, 59, 59); //23:59:59 LocalDate.now().atTime(LocalTime.MAX); //23:59:59.999999999 

但是没有内置方法。

正如@JBNizet评论的那样,如果你想创建一个间隔,你也可以使用一个间隔到午夜,独家。

这些是LocalTime可用的变体,注意MIDNIGHTMIN相等。

 LocalDate.now().atTime(LocalTime.MIDNIGHT); //00:00:00.000000000 LocalDate.now().atTime(LocalTime.MIN); //00:00:00.000000000 LocalDate.now().atTime(LocalTime.NOON); //12:00:00.000000000 LocalDate.now().atTime(LocalTime.MAX); //23:59:59.999999999 

作为参考,这是java.time.LocalTime的实现

 /** * Constants for the local time of each hour. */ private static final LocalTime[] HOURS = new LocalTime[24]; static { for (int i = 0; i < HOURS.length; i++) { HOURS[i] = new LocalTime(i, 0, 0, 0); } MIDNIGHT = HOURS[0]; NOON = HOURS[12]; MIN = HOURS[0]; MAX = new LocalTime(23, 59, 59, 999_999_999); } 

从第二天开始,减去1秒钟。 这应该适合你。 :

 public static void main(String[] args) { LocalDate date = LocalDate.now(); LocalDateTime dt = date.atStartOfDay().plusDays(1).minusSeconds(1); System.out.println(dt); } 

O / P:

 2016-04-04T23:59:59