我希望在我的Locale(美国)中获得本周第一天(星期日)的LocalDate,但下面的代码将返回 next 周的开始,我是什么失踪?我可以做minusWeeks(1)
但感觉就像是黑客。
// returns 4/15 instead of 4/8
LocalDate startDate = LocalDate.now().with(WeekFields.of(Locale.US).getFirstDayOfWeek());
答案 0 :(得分:0)
我认为这是因为java类DayOfWeek
LocalDate startDate = LocalDate.now().with(WeekFields.of(Locale.US).getFirstDayOfWeek());
System.out.println(startDate.toString());
返回2018-04-15(今天是2018-04-12在我的位置)
您可以在LocalDate.with()
文档Link
DAY_OF_WEEK - 返回具有指定星期几的LocalDate。日期在周一至周日的范围内向前或向后调整最多6天。
with()
的参数为ChronoField,其变量约为DAY_OF_WEEK
public static final ChronoField DAY_OF_WEEK:这代表了星期几的标准概念。在默认的ISO日历系统中,它具有从星期一(1)到星期日(7)的值。 DayOfWeek类可用于解释结果
也许你认为星期天会是0,一周的开始。但问题是星期天不是0而是7.所以,这就是你问题的原因。