Извините заранее, если я смущаю любые термины, относящиеся к дате ISO.Как я могу перебирать каждую неделю в году на Java 8?
Я хотел бы иметь возможность перебирать каждую неделю в течение определенного года (скажем, 2015 г.). Я понимаю, что вы можете рассчитать количество недель между 1/1/2015 и 12/31/2015, но это не соответствует стандарту ISO недели. Скорее, он дает количество 7-дневных периодов между двумя датами. Первая неделя ISO года не обязательно начинается 1 января 2012 года.
Если я могу получить первую дату первой недели, я считаю, что могу просто перебрать через ZonedDateTime.plusWeeks(1)
на 52 недели. Вы можете получить номер недели в произвольной дат через поле аксессор:
ZonedDateTime date = ZonedDateTime.now();
WeekFields weekFields = WeekFields.of(Locale.getDefault());
int weekNumber = date.get(weekFields.weekOfWeekBasedYear());
Учитывая это, я думаю, что это должно быть возможным, чтобы получить дату первого дня первой недели конкретного год в Java8 Time API, но я еще не нашел способ сделать это.
См. Также [мои примеры] (http://time4j.net/tutorial/appendix.html#x14) для создания даты недели ISO в разных библиотеках. Даже старый JDK с 'java.util.GregorianCalendar', по-видимому, проще, потому что JSR-310 (java.time-package) здесь не имеет простого фабричного метода. –