【问题标题】:java.time: How to validate calendar weeksjava.time:如何验证日历周
【发布时间】:2018-05-15 13:01:48
【问题描述】:

如何验证日历周是否有效?

例如:

  • 2018 年的第 53 周在 ISO-8601 日历系统中无效。 2018 年只有 52 个日历周。

  • 2020 年的第 53 周有效 - 从 2020 年 12 月 28 日到 2021 年 1 月 3 日。(“基于周的年的第一周是标准 ISO 年的第一个基于星期一的周新年至少有 4 天”-see IsoFields javadoc)

如何通过java.time 解决这个问题?

【问题讨论】:

  • 哼,所有年份都有 52 周不是吗?验证像 32/13/2555 这样的整个日期?
  • @azro 不,有些年份有 53 个日历周 - 例如 ISO-8601 日历系统中的 2020 年。 2020 年第 53 周是从 2020 年 12 月 28 日到 2021 年 1 月 3 日。
  • @NengLiu 您链接的问题是关于获取给定日期的周数 - 我需要验证,如果某一年的一周存在。
  • @olivmir 你能编辑你的问题并告诉我们一些有效的年份和一些无效的年份吗?
  • @YCF_L 为了更好地理解,请阅读 IsoFields 的 javadoc - 我已将其添加到我的问题中

标签: java java-time


【解决方案1】:

使用TemporalAccessor.range(TemporalField):

LocalDate date = LocalDate.of(2020, 6, 1);
ValueRange range = date.range(IsoFields.WEEK_OF_WEEK_BASED_YEAR);
System.out.println(range.getMaximum());  // 53

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-14
    • 2019-02-19
    • 2010-12-11
    • 1970-01-01
    • 1970-01-01
    • 2017-08-01
    • 1970-01-01
    相关资源
    最近更新 更多