如果我在这里混淆了任何与ISO日期相关的术语,请提前道歉。
我想能够迭代给定年份(比如2015年)中的每一周。我知道可以计算出2015年1月1日到12月31日之间的周数,但这并不符合ISO标准的一周定义方式。相反,它给出的是在两个日期之间的7天周期数。一年中的第一个ISO周不一定从2015年1月1日开始。
如果我能得到第一周的第一天日期,我可以通过ZonedDateTime.plusWeeks(1)
迭代52周。你可以通过字段访问器获取任意日期的周数:
ZonedDateTime date = ZonedDateTime.now();
WeekFields weekFields = WeekFields.of(Locale.getDefault());
int weekNumber = date.get(weekFields.weekOfWeekBasedYear());
基于此,我认为在Java8 Time API中获取特定年份第一周第一天的日期是可能的,但我还没有找到方法。
java.util.GregorianCalendar
也显然更简单,因为JSR-310(java.time-package)在这里缺乏一个简单的工厂方法。 - Meno Hochschild