为什么 plusMonths、plusWeeks 等在 java.time.chrono 类中不是公开的

问题描述 投票:0回答:2

在像

LocalDate
LocalDateTime
这样的类中,有像
plusMonths()
plusWeeks()
这样的方法,并且可以使用它们,因为它们是公共的。然而,在
HijrahDate
类中,这些方法不是公共的,并且它们似乎没有在这个包中的任何类中使用。

如果这些方法没有(也不能)在任何地方使用,那么它们还有什么意义?

java
2个回答
2
投票

plusMonths()
plusWeeks()
对于任何日历系统都是通用的,但添加月份、周等的具体行为在不同日历之间确实可能有所不同。

所有这些日期类都使用

ChronoLocalDate
接口,该接口有一个名为
plus(long, TemporalUnit)
的方法 - 这是向日期添加任意数量的任何时间单位的最佳方法。最酷的部分是,每个日期类都可以决定此方法如何为他们工作,所以如果您想向 HijrahDate 添加一个月,您可以这样做,并确保它有效:

HijrahDate date = HijrahDate.now();
date = date.plus(1, ChronoUnit.MONTHS);

了解更多:https://docs.oracle.com/javase/8/docs/api/java/time/chrono/ChronoLocalDate.html


0
投票

对于后来看到这个问题的人,我开发了一个 Kotlin/JVM 库来方便处理 Hijrah 日期和时间,它构建在 java.time.chrono 之上。

它向当前的 java 类添加了一组新类和扩展函数,包括公开可用的 plusWeeks、plusMonths 等函数。 尝试一下!

© www.soinside.com 2019 - 2024. All rights reserved.