4

现在我只计算从第一个日期到最后一个日期的星期四数。是否有使用 Java 8 日期和时间 API 的单线解决方案?我试过了:

date.range(WeekFields.ISO.weekOfMonth()).getMaximum(); 

但它给出的结果不正确,例如,对于 2014 年 5 月 5 日,它返回 5,而根据 ISO8601,3 月只有 4 周。

4

1 回答 1

1

让我们将问题表述为“给定月份有多少个星期四”?

(ISO-8601 没有描述几个月内几周的方法 - 它只描述了几年内几周的方法)。

我们可以使用该方法找到第 5 次出现的星期四,看看是否在同一个月:

LocalDate date = ...
LocalDate fifthThu = date.with(TemporalAdjusters.dayOfWeekInMonth(5, THURSDAY));
int thursdays = (fifthThu.getMonth() == date.getMonth() ? 5 : 4);
于 2014-09-26T11:23:16.263 回答