LocalDate 和 LocalDateTime 依赖于 ZonedDateTime

LocalDate and LocalDateTime depend on ZonedDateTime

为什么方法是:

public ZonedDateTime atStartOfDay(ZoneId zone) 来自 class LocalDate



public ZonedDateTime atZone(ZoneId zone) 来自 class LocalDateTime

将依赖项添加到 ZonedDateTime?

它们看起来像 ZonedDateTime 中的 "util" 方法,实际上是从 classes(LocalDateLocalDateTime) 应该对时区一无所知。

此外,还有更多 "util" 方法可以添加到那些 classes 到 "help" 带时区。

这是架构方面的最佳方法吗?

虽然我没有设计那些 classes 并且不介意 reader,但这是我的猜测。 java.time 的主要设计目标是流畅 API,以一种感觉自然的方式链接方法调用的可能性。例如你可以做

    LocalDate.parse("12/6/2000", DateTimeFormatter.ofPattern("d/M/uuuu"))
            .atStartOfDay(ZoneId.of("Asia/Kolkata"))
            .toInstant()
            .toEpochMilli()

此类方法链接要求从 LocalDate.parse() 返回的 LocalDate 对象接受对 atStartOfDay 的调用。想一想如果您不得不在 ZonedDateTIme:

中使用静态方法,代码会是什么样子
    ZonedDateTime.ofStartOfDay(LocalDate.parse("12/6/2000", DateTimeFormatter.ofPattern("d/M/uuuu")),
                    ZoneId.of("Asia/Kolkata")))
            .toInstant()
            .toEpochMilli()

阅读起来非常困难。将该方法放入实用程序 class 中也无济于事,代码仍然非常相似。

我明白你的意思:流利 API 的代价是 LocalDate 依赖于 ZonedDateTime,这种依赖不能单独在域内 explained/justified .