getFirstDayOfWeek不返回一周的第一天

时间:2018-04-11 22:41:17

标签: java java-8

我希望在我的Locale(美国)中获得本周第一天(星期日)的LocalDate,但下面的代码将返回 next 周的开始,我是什么失踪?我可以做minusWeeks(1)但感觉就像是黑客。

// returns 4/15 instead of 4/8
LocalDate startDate = LocalDate.now().with(WeekFields.of(Locale.US).getFirstDayOfWeek());

1 个答案:

答案 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

事情是从星期一(1)到星期日(7)开始

  

public static final ChronoField DAY_OF_WEEK:这代表了星期几的标准概念。在默认的ISO日历系统中,它具有从星期一(1)到星期日(7)的值。 DayOfWeek类可用于解释结果

也许你认为星期天会是0,一周的开始。但问题是星期天不是0而是7.所以,这就是你问题的原因。