【发布时间】:2023-03-29 12:01:01
【问题描述】:
如果您认为该周将从每年的 Jan 01 开始,并且周开始是 SUNDAY,那么 2019 年将有 53 周。
跟随上面的Jan 29,30,31 2019 将进入Week-53 of 2019。
正如IsoFields 的文档中所给出的WEEK_OF_WEEK_BASED_YEAR all three fields are validated against their range of valid values. The week-of-week-based-year field is validated from 1 to 52 or 53 depending on the week-based-year.
所以我假设以下代码应该给出输出:WEEK_OF_WEEK_BASED_YEAR 53 & WEEK_BASED_YEAR 2019。
但它的输出为:1 & 2020
import java.time.LocalDate;
import java.time.chrono.IsoChronology;
import java.time.format.DateTimeFormatter;
import java.time.format.ResolverStyle;
import java.time.temporal.IsoFields;
public class WeekStartDemo {
public static void main(String args[]) {
DateTimeFormatter DATE_FORMATTER = DateTimeFormatter
.ofPattern("uuuu-MM-dd")
.withChronology(IsoChronology.INSTANCE)
.withResolverStyle(ResolverStyle.STRICT);
LocalDate updatedDate = LocalDate.parse("2019-12-30", DATE_FORMATTER);
System.out.println(updatedDate.toString());
System.out.println(updatedDate.get(IsoFields.WEEK_OF_WEEK_BASED_YEAR));
System.out.println(updatedDate.get(IsoFields.WEEK_BASED_YEAR));
}
}
如果我将日期传递为2019-12-28,那么它会返回WEEK_OF_WEEK_BASED_YEAR 52 和WEEK_BASED_YEAR 2019。但不适用于 2019 年的最后一周(即第 53 周)
让我知道我在上面的代码中缺少什么。
【问题讨论】:
-
基于周的年份本身是相对于标准 ISO 预测年份定义的。它与标准年的不同之处在于它总是从星期一开始。
标签: java java-time week-number