1、场景需求
获取日期是当年的第几周时,我们经常通过Calendar获取:calendar.get(Calendar.WEEK_OF_YEAR)
2022年1月1日既是2022年的第一周也是2021年的最后一周,当进行编程计算时,需要一个确定的标准:
-
需求一:不同的需求可能周的起始星期不同
-
需求二-场景一:3号作为新一年的第一周,1号作为去年的最后一周
-
需求二-场景二:1号作为新一年的第一周
2、参数介绍
-
void setFirstDayOfWeek(int value)
设置一周的第一天是什么;例如,美国的SUNDAY ,法国的MONDAY
参数:value – 给定的一周的第一天。
-
void setMinimalDaysInFirstWeek(int value)
设置一年中第一周所需的最少天数;例如,如果第一周被定义为包含一年中第一个月的第一天的一周,则使用值 1 调用此方法。如果必须是整周,则使用值 7。
参数:value – 一年中第一周所需的给定最少天数。
3、参数配置
- 需求一:
- 从周一算作一周的开始:setFirstDayOfWeek(Calendar.MONDAY);
- 从周日算作一周的开始:setFirstDayOfWeek(Calendar.SUNDAY);
- 需求二:
- 定义一年中第一周所需要的最少天数
- 超过天数则会算作第一周,例如2022年setMinimalDaysInFirstWeek(1),则1月1日为2022年的第一周;
- 未超过天数则会从下周开始计算为当年的第一周,例如2022年setMinimalDaysInFirstWeek(3),则1月1日算作2021年的最后一周,1月3日作为2022年的第一周。