gpt4 book ai didi

java - LocalTime.MIDNIGHT 与 LocalTime.MIN - 有什么区别吗?

转载 作者:行者123 更新时间:2023-12-03 21:40:38 25 4
gpt4 key购买 nike

我最近使用 LocalDate.atStartOfDay() 回答了一些问题和 LocalDate.atTime(LocalTime.MIN) .
我想知道为什么没有 LocalDate.atEndOfDay()或类似的,所以必须使用 LocalDate.atTime(LocalTime.MAX)为了获得那个特定日子的最后一刻(我认为是 nanos)。
我查看了LocalDate的来源和 LocalTime并对此感到有些困惑:

/**
* Combines this date with the time of midnight to create a {@code LocalDateTime}
* at the start of this date.
* <p>
* This returns a {@code LocalDateTime} formed from this date at the time of
* midnight, 00:00, at the start of this date.
*
* @return the local date-time of midnight at the start of this date, not null
*/
public LocalDateTime atStartOfDay() {
return LocalDateTime.of(this, LocalTime.MIDNIGHT);
}
与我的预期相反,此方法返回 LocalDateTime使用 LocalTime.MIDNIGHT而不是 LocalTime.MIN .
当然,我打开了 OpenJDK source of 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]; // <--- == MIN
NOON = HOURS[12];
MIN = HOURS[0]; // <--- == MIDNIGHT
MAX = new LocalTime(23, 59, 59, 999_999_999);
}
虽然我完全理解 NOON的存在和 MAX ,我真的不明白为什么会有 MINMIDNIGHT显然其中之一就足够了,因为它们具有相同的值(value)。
谁能告诉我原因...
  • ... 有两个常数具有相同的值和
  • ... 为什么代码使用 MIDNIGHT一天的开始?

  • 只是为了在某些情况下更具可读性吗?
    但为什么不是 MIN用于 LocalTime.atStartOfDay()而是 LocalTime.MIDNIGHT ?

    最佳答案

    MIN存在提供最小值,这与其他 java.time.* 类一致。MIDNIGHT存在是为了向开发人员提供语义含义,并作为向 Javadoc 读者表明午夜被认为是一天的开始(而不是结束)的地方。
    总结,代码阅读中的语义优势超过了额外常量的成本。
    (来源:我是 java.time.* 的主要作者)

    关于java - LocalTime.MIDNIGHT 与 LocalTime.MIN - 有什么区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67998391/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com