in core/src/main/java/org/apache/calcite/avatica/util/DateTimeUtils.java [930:948]
private static int getIso8601WeekNumber(int julian, int year, int month, int day) {
long fmofw = firstMondayOfFirstWeek(year);
if (month == 12 && day > 28) {
if (31 - day + 4 > 7 - (Math.floorMod(julian, 7) + 1)
&& 31 - day + Math.floorMod(julian, 7) + 1 >= 4) {
return (int) (julian - fmofw) / 7 + 1;
} else {
return 1;
}
} else if (month == 1 && day < 5) {
if (4 - day <= 7 - (Math.floorMod(julian, 7) + 1)
&& day - (Math.floorMod(julian, 7) + 1) >= -3) {
return 1;
} else {
return (int) (julian - firstMondayOfFirstWeek(year - 1)) / 7 + 1;
}
}
return (int) (julian - fmofw) / 7 + 1;
}