Java YYYYwwe分析结果与预期不符

Java YYYYwwe分析结果与预期不符,java,scala,datetime,Java,Scala,Datetime,我创建了一个DateTimeFormatterBuilder,如下所示: val customFormatter = new DateTimeFormatterBuilder() .appendValue(WeekFields.ISO.weekBasedYear(), 4) .appendValue(WeekFields.ISO.weekOfWeekBasedYear(), 2) .appendValue(ChronoField.DAY_OF_WE

我创建了一个
DateTimeFormatterBuilder
,如下所示:

val customFormatter = new DateTimeFormatterBuilder()
        .appendValue(WeekFields.ISO.weekBasedYear(), 4)
        .appendValue(WeekFields.ISO.weekOfWeekBasedYear(), 2)
        .appendValue(ChronoField.DAY_OF_WEEK, 1)
        .toFormatter()
+-------+----+----+---+
|partcol|year|week|day|
+-------+----+----+---+
|2013014|2013|   1|  4|
|2015233|2015|  23|  3|
|2020117|2020|  12|  7|
+-------+----+----+---+
要分析以下字符串的星期,我使用:

val weekFields = WeekFields.of(Locale.getDefault())
LocalDate.parse(dateString, customFormatter).get(weekFields.weekBasedYear())
结果如下:

val customFormatter = new DateTimeFormatterBuilder()
        .appendValue(WeekFields.ISO.weekBasedYear(), 4)
        .appendValue(WeekFields.ISO.weekOfWeekBasedYear(), 2)
        .appendValue(ChronoField.DAY_OF_WEEK, 1)
        .toFormatter()
+-------+----+----+---+
|partcol|year|week|day|
+-------+----+----+---+
|2013014|2013|   1|  4|
|2015233|2015|  23|  3|
|2020117|2020|  12|  7|
+-------+----+----+---+
2020
的一周将始终高于所需值+1。在这个场景中,我试图解析时间信息以获取
weekBasedYear
weekWeekBaseDyear
DAY\u OF u周

openjdk version "1.8.0_232"
OpenJDK Runtime Environment Corretto-8.232.09.1 (build 1.8.0_232-b09)
OpenJDK 64-Bit Server VM Corretto-8.232.09.1 (build 25.232-b09, mixed mode)
LocalDate.parse(dateString,customFormatter).get(ChronoField.DAY\u OF_WEEK)
周计划不同(这就是创建
周字段
类的全部原因)。您正在使用
WeekFields.ISO
进行解析,然后使用
WeekFields.of(Locale.getDefault())
将各个字段打印回来。有时候会有不同的结果

根据国际标准化组织的规定,一年中的第一周是新年中至少有4天的第一周。我可以在区域设置中重现您的12周(+1,而解析后的11周),其中第1周是包含1月1日的一周。例如,在一些阿拉伯地区(一周从周六开始)和以色列(一周从周日开始)就是这样


我相信解决方案很简单:使用相同的
WeekFields
对象进行解析和打印(或等效的
WeekFields
对象)。

欢迎使用。请阅读并实际提问。现在我不能确定你实际上在问什么,你所显示的结果是你所期望的或你得到的,以及你是否认为它们是正确的。<代码>