Java时间:获取特定年份的最大周数

我只找到了Joda Time的解决方案。

仅当最后一天不在第一周时,我的解决方案才有效:

LocalDate.now() // or any other LocalDate

.withDayOfMonth(31)

.withMonth(12)

.get(weekFields.weekOfWeekBasedYear())

那么在Java Time中(例如在Joda Time中)正确的方法是什么?

回答:

可使用java.time.*API 直接获得此信息。

关键方法已rangeRefinedBy(Temporal)启用TemporalField。它允许您获得一个ValueRange为字段提供最小值和最大值的对象,并通过传入的时间对象对其进行优化。

要了解一年中有多少ISO周,请执行以下操作:

LocalDate date = LocalDate.of(2015, 6, 1);

long weeksInYear = IsoFields.WEEK_OF_WEEK_BASED_YEAR.rangeRefinedBy(date).getMaximum();

System.out.println(weeksInYear);

请注意,您传递的日期用于确定答案。因此,在传递1月初或12月下旬的日期时,请确保您了解基于ISO周的日历的工作原理,以及日历年与周年之间的差异。

以上是 Java时间:获取特定年份的最大周数 的全部内容, 来源链接: utcz.com/qa/425707.html

回到顶部