java获取ISO 8601最大周数
ISO 8601 关于周的规则
(1)该年的1月1日,如果是周一、周二、周三或者周四,那么1月1日所在的周就是该年的第一周;
(2)该年的1月1日,如果是周五,周六或者周日,那么1月1日所在的周就是上一年的最后一周;
(3)每个周以周一开始,周日结束。
java代码实现
import java.time.LocalDate;
/**
* @param year 年份yyyy
* @return string yyyyww
* @throws BusinessException
*/
public static String getMaxWeekOfYear(String year) throws BusinessException {
if (StringUtil.isEmpty(year))
throw new BusinessException("year is null");
int yearInt = NumberUtils.toInt(year);
int week = LocalDate.of(yearInt, 12, 31).get(IsoFields.WEEK_OF_WEEK_BASED_YEAR);
if (week != MAX_WEEK_OF_YEAR)
week = 52;
return String.format("%04d%02d", yearInt, week);
}
运行结果
输入:2021
输出:202152
输入:2026
输出:202653