如何获得一天的结束时间,当给定一个本地日期?
如何获得一天的结束时间,当给定一个本地日期?
我可以通过做来得到它
LocalDateTime.of(LocalDate.now(), LocalTime.of(23, 59, 59));
但是,在一天的结束时间是否有等效的“atStartOfDay”方法?
LocalDate.now().atStartOfDay();
LocalDate.now().atEndOfDay(); //doesn't work
如何获得一天的结束时间,当给定一个本地日期?
我可以通过做来得到它
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
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);
}
如果分配给(表示)的第4个构造函数参数()的值看起来很陌生,那是因为它正在使用Java 7功能数字文本中的下划线。999_999_999
LocalTime
nanoOfSecond
在 Java SE 7 及更高版本中,任意数量的下划线字符 (_) 都可以出现在数字文本中数字之间的任何位置。例如,此功能使您能够在数字文本中分隔数字组,这可以提高代码的可读性。