private int localizedWeekBasedYear(TemporalAccessor temporal) {
int dow = localizedDayOfWeek(temporal);
int year = temporal.get(YEAR);
int doy = temporal.get(DAY_OF_YEAR);
int offset = startOfWeekOffset(doy, dow);
int week = computeWeek(offset, doy);
if (week == 0) {
return year - 1;
} else {
ValueRange dayRange = temporal.range(DAY_OF_YEAR);
int yearLen = (int)dayRange.getMaximum();
int newYearWeek = computeWeek(offset, yearLen + weekDef.getMinimalDaysInFirstWeek());
if (week >= newYearWeek) {
return year + 1;
}
}
return year;
}
|