项目需要,做一个周报相关的需求
需要知道当前日期所在年一共有多少周,当前日期是第几周,还要计算出当前周的开始时间和结束时间。如
当前是2022年1月11日。是2022年的第3周,第三周的起止时间应该是2022年1月10日-2022年1月16日
也就是根据当前日期计算出这些
代码如下 仅供参考
public TimeEntity getWeekTime() {
//当前年份
int nowYear = LocalDate.now().getYear();
//当前是本年第几周
int week = this.getYearWeek();
//今年总周数
int sumWeek = this.getTotalWeeksInYear(nowYear);
//本周起止时间
Date[] time = this.weekToDayFormate(nowYear, week);
}
public int getYearWeek() {
//使用DateTimeFormatter获取当前周数
WeekFields weekFields = WeekFields.of(DayOfWeek.MONDAY, 1);
int i = LocalDate.now().get(weekFields.weekOfYear());
return i;
}
public int getTotalWeeksInYear(int year) {
Calendar mCalendar = new GregorianCalendar(TimeZone.getDefault());
mCalendar.setFirstDayOfWeek(Calendar.MONDAY);
// Workaround
mCalendar.set(year,
Calendar.DECEMBER,
31);
int totalDaysInYear = mCalendar.get(Calendar.DAY_OF_YEAR);
System.out.println(totalDaysInYear);
int totalWeeks = totalDaysInYear / 7;
return totalWeeks;
}
/**
* 根据year年的第week周,查询本周的起止时间
*/
public Date[] weekToDayFormate(int year, int week) {
Date[] time = new Date[2];
Calendar calendar = Calendar.getInstance();
// ①.设置该年份的开始日期:第一个月的第一天
calendar.set(year, 0, 1);
// ②.计算出第一周还剩几天:+1是因为1号是1天
int dayOfWeek = 7 - calendar.get(Calendar.DAY_OF_WEEK) + 1;
// ③.周数减去第一周再减去要得到的周
week = week - 2;
// ④.计算起止日期
calendar.add(Calendar.DAY_OF_YEAR, week * 7 + dayOfWeek);
time[0] = calendar.getTime();
calendar.add(Calendar.DAY_OF_YEAR, 6);
time[1] = calendar.getTime();
return time;
}