【问题标题】:Java 8 Date & Time API: How to get count of ISO8601 weeks in given month?Java 8 Date & Time API:如何获取给定月份的 ISO8601 周数?
【发布时间】:2014-09-26 08:02:32
【问题描述】:

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

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

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

【问题讨论】:

    标签: java iso8601 java-time


    【解决方案1】:

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

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

    我们可以用这个方法找到第5次出现的星期四,看看是不是同月:

    LocalDate date = ...
    LocalDate fifthThu = date.with(TemporalAdjusters.dayOfWeekInMonth(5, THURSDAY));
    int thursdays = (fifthThu.getMonth() == date.getMonth() ? 5 : 4);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-15
      • 1970-01-01
      • 2022-07-29
      • 1970-01-01
      • 1970-01-01
      • 2011-03-17
      相关资源
      最近更新 更多