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

新手上路,请多包涵

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

我可以通过这样做得到它

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

但是一天结束时是否有等效的“atStartOfDay”方法?

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

原文由 cooxie 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.3k
2 个回答

根据您的需要,这里有一些替代方案:

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

但是没有内置方法。

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

原文由 assylias 发布,翻译遵循 CC BY-SA 3.0 许可协议

这些是 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);
}

如果分配给第4个构造函数参数( 999_999_999 ), LocalTime 15535DDDFC07953D274493ADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADAADAA03 nanoOfSecond 数字文字

在 Java SE 7 及更高版本中,任意数量的下划线字符 (_) 可以出现在数字文字中数字之间的任何位置。例如,此功能使您能够分隔数字文字中的数字组,这可以提高代码的可读性。

原文由 Robert Hunt 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题