【发布时间】:2018-04-25 19:59:54
【问题描述】:
我有一种在 Java 中查看日历的方法,它按年份、星期几和星期数计算日期。
现在,当我计算 2017 年的日期时,一切正常。但是当我从 2018 年 1 月开始计算日期时,它需要 2017 年的日期。
我的代码看起来像
import java.time.temporal.IsoFields;
import java.time.temporal.ChronoField;
import java.time.LocalDate;
// .....
LocalDate desiredDate = LocalDate.now()
.with(IsoFields.WEEK_OF_WEEK_BASED_YEAR, 1)
.with(ChronoField.DAY_OF_WEEK, 1)
.withYear(2018);
结果为 2018-01-02,应该是 2018-01-01。这怎么可能?
【问题讨论】:
-
可能dayOfWeek索引从0开始
-
在 ChronoFIeld 的 Javadoc 上写着:星期一 (1) 到星期日 (7)
-
@SayanSil a) 它没有,b) 不能解释结果
2018-01-02 -
是的。检查。它从 1 开始。您是否检查了除一年的开始周以外的其他周?
-
如果你打印出链中的增量步骤(
2017-11-13->2017-01-02->2017-01-02->2018-01-02),问题就变得更清楚了。