如何获得一天的结束时,给予一个LocalDate?
我可以通过做
LocalDateTime.of(LocalDate.now(), LocalTime.of(23, 59, 59));
但是,到底有没有一种类似的“atStartOfDay”方法呢?
LocalDate.now().atStartOfDay();
LocalDate.now().atEndOfDay(); //doesn't work
发布于 2016-04-04 09:07:12
以下是一些可供选择的方法,取决于您需要什么:
LocalDate.now().atTime(23, 59, 59); //23:59:59
LocalDate.now().atTime(LocalTime.MAX); //23:59:59.999999999
但是没有内置的方法。
正如@JBNizet所评论的那样,如果您想要创建一个间隔,也可以使用一个直到午夜的时间间隔,这是排他的。
发布于 2018-01-04 07:07:16
这些是LocalTime
中可用的变体,请注意MIDNIGHT
和MIN
是相等的。
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);
}
如果分配给LocalTime
(表示nanoOfSecond
)的第四个构造函数参数(nanoOfSecond
)的值看起来不熟悉,那是因为它使用的是Java7特性数字文字中的下划线。
在Java 7和更高版本中,任意数量的下划线字符(_)可以出现在数字文字中的数字之间的任意位置。例如,此功能使您能够将数字文本中的一组数字分隔开来,这可以提高代码的可读性。
发布于 2016-04-04 09:01:07
从第二天开始,从其中减去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
https://stackoverflow.com/questions/36408548
复制相似问题