在像
LocalDate
、LocalDateTime
这样的类中,有像plusMonths()
、plusWeeks()
这样的方法,并且可以使用它们,因为它们是公共的。然而,在 HijrahDate
类中,这些方法不是公共的,并且它们似乎没有在这个包中的任何类中使用。
如果这些方法没有(也不能)在任何地方使用,那么它们还有什么意义?
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
对于后来看到这个问题的人,我开发了一个 Kotlin/JVM 库来方便处理 Hijrah 日期和时间,它构建在 java.time.chrono 之上。
它向当前的 java 类添加了一组新类和扩展函数,包括公开可用的 plusWeeks、plusMonths 等函数。 尝试一下!