package com.seeingtv.statement.api;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
public class Test {
public static void main(String[] args) throws Exception {
List weeks = getWeeks("2020-12-27", "2021-01-08");
System.out.println(weeks);
// c.setFirstDayOfWeek(Calendar.MONDAY);
// c.setMinimalDaysInFirstWeek(7);
// c.setTime (date);
}
public static List getWeeks(String startTime, String endTime) throws Exception {
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
Date d1 = df.parse(startTime);
Date d2 = df.parse(endTime);
// Date date = DateUtil.parse(startTime);
Calendar c = Calendar.getInstance();
c.setFirstDayOfWeek(Calendar.MONDAY);
// c.setMinimalDaysInFirstWeek(7);
c.setTime(d1);
//获取开始时间是当年的第几周
int startWeek = c.get(Calendar.WEEK_OF_YEAR);
//获取月份,如果月份是12,并且周数是1,重新赋值53周
int startMonth = c.get(Calendar.MONTH) + 1;
if (startMonth == 12 && startWeek == 1) {
startWeek = 53;
}
//获取开始的年份
int startYear = c.get(Calendar.YEAR);
// Date dateEnd = DateUtil.parse(endTime);
Calendar cEnd = Calendar.getInstance();
cEnd.setFirstDayOfWeek(Calendar.MONDAY);
// cEnd.setMinimalDaysInFirstWeek(7);
cEnd.setTime(d2);
//获取结束时间是第几周
int endWeek = cEnd.get(Calendar.WEEK_OF_YEAR);
//获取月份,如果月份是12,并且周数是1,重新赋值53周
int endMonth = cEnd.get(Calendar.MONTH) + 1;
if (endMonth == 12 && endWeek == 1) {
endWeek = 53;
}
//获取结束时间的年份
int endYear = cEnd.get(Calendar.YEAR);
List list = new ArrayList<>();
//默认每年53周
if (endYear == startYear) {
for (int week = startWeek; week <= endWeek; week++) {
String yearAndWeek = startYear + "-" + week;
list.add(yearAndWeek);
}
}
if (endYear > startYear) {
//计算相差年份
int year = endYear - startYear;
//循环次数
int count;
if (year == 1) {
//循环次数
count = 53 - startWeek + endWeek - 1;
} else {
int i = endYear - startYear;//循环次数
count = 53 - startWeek + (i - 1) * 53 + endWeek;
}
for (int i = 0; i <= count; i++) {
if (startWeek >= 53 && endWeek >= 1){
startYear = startYear + 1;
startWeek = 1;
}
String yearAndWeek = startYear + "-"+startWeek;
startWeek++;
// 这是原先的方法
/*if (startWeek == 54) {
startWeek = 1;
startYear = startYear + 1;
}*/
list.add(yearAndWeek);
}
}
return list;
}
}
获取时间段内的周列表,在本年中的第几周
最新推荐文章于 2024-04-17 15:05:49 发布