实现思路:
目录
实现点三:关于如何传入时间,获取当前时间为第几年的第几周。因为如果传入时间,例如2023年 1月1号可能为去年的最后一周
实现点一: 获取新的计算方式一年有多少周
// 实现思路
Calendar calendar1 = Calendar.getInstance();
// 设置获取的年份
calendar1.set(Calendar.YEAR,2024);
// 设置一周开始的时间
calendar1.setFirstDayOfWeek(Calendar.MONDAY);
// setMinimalDaysInFirstWeek 设置一年的第一周最少得天数
calendar1.setMinimalDaysInFirstWeek(7);
// 获取一年有多少周
int weeksInWeekYear = calendar1.getWeeksInWeekYear();
System.out.println("一年有:"+weeksInWeekYear+"周");
实现点二:关于新的计算方式,如何代码实现第一周的时间计算
// 实现点二:关于新的计算方式,如何代码实现第一周的时间计算
Calendar calendar2 = Calendar.getInstance();
// 设置一周开始的时间
calendar2.setFirstDayOfWeek(Calendar.MONDAY);
// setMinimalDaysInFirstWeek 设置一年的第一周最少得天数
calendar2.setMinimalDaysInFirstWeek(7);
for (int i = 1; i <= weeksInWeekYear; i++) {
// weekYear-周年
//weekOfYear-基于weekYear的星期数
//dayOfWeek-星期几的值
calendar2.setWeekDate(2023,i,Calendar.MONDAY);
int year = calendar2.get(Calendar.YEAR);
int month = calendar2.get(Calendar.MONTH) + 1;
int day = calendar2.get(Calendar.DAY_OF_MONTH);
System.out.println(year +" 年 " +month + "\t月\t"+day+"\t日\t");
}
实现点三:关于如何传入时间,获取当前时间为第几年的第几周。因为如果传入时间,例如2023年 1月1号可能为去年的最后一周
// 实现点三:关于如何传入时间,获取当前时间为第几年的第几周。因为如果传入时间,例如2023年 1月1号可能为去年的最后一周
// 先指定一个时间 或者 定义为当前时间也可。方式不一
Calendar calendar3 = Calendar.getInstance();
calendar3.set(Calendar.YEAR,2022);
calendar3.set(Calendar.MONTH,0);
calendar3.set(Calendar.DATE,1);
Date date = calendar3.getTime();
Calendar calendarWeek = Calendar.getInstance();
// 下面两句其实加不加都可以实现。因为一周7天,就已经够了。
// calendarWeek.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); // 设置周一为一周的开始
// calendarWeek.setFirstDayOfWeek(Calendar.MONDAY); //以周一为首日
calendarWeek.setMinimalDaysInFirstWeek(7);//
calendarWeek.setTime(date);
//获取当前周为第几周
int week = calendarWeek.get(Calendar.WEEK_OF_YEAR);
// 如何判断为当前周为哪一年的 如果日期为1月份且天数小于7 周数大于50,那么判定为上一年的的最后一周
int year = calendarWeek.get(Calendar.YEAR);
int month = calendarWeek.get(Calendar.MONTH) + 1;
int day = calendarWeek.get(Calendar.DATE);
if ((month == 1 && day < 7) && week > 50){
year -= 1;
}
System.out.println("当前周为"+year+"年\t当前的周是第"+week+"\t周");