获取某一年按周统计数据及该周下日期,效果如下
1 [2021-01-01, 2021-01-02, 2021-01-03]
2 [2021-01-04, 2021-01-05, 2021-01-06, 2021-01-07, 2021-01-08, 2021-01-09, 2021-01-10]
3 [2021-01-11, 2021-01-12, 2021-01-13, 2021-01-14, 2021-01-15, 2021-01-16, 2021-01-17]
4 [2021-01-18, 2021-01-19, 2021-01-20, 2021-01-21, 2021-01-22, 2021-01-23, 2021-01-24]
5 [2021-01-25, 2021-01-26, 2021-01-27, 2021-01-28, 2021-01-29, 2021-01-30, 2021-01-31]
6 [2021-02-01, 2021-02-02, 2021-02-03, 2021-02-04, 2021-02-05, 2021-02-06, 2021-02-07]
7 [2021-02-08, 2021-02-09, 2021-02-10, 2021-02-11, 2021-02-12, 2021-02-13, 2021-02-14]
8 [2021-02-15, 2021-02-16, 2021-02-17, 2021-02-18, 2021-02-19, 2021-02-20, 2021-02-21]
9 [2021-02-22, 2021-02-23, 2021-02-24, 2021-02-25, 2021-02-26, 2021-02-27, 2021-02-28]
10 [2021-03-01, 2021-03-02, 2021-03-03, 2021-03-04, 2021-03-05, 2021-03-06, 2021-03-07]
11 [2021-03-08, 2021-03-09, 2021-03-10, 2021-03-11, 2021-03-12, 2021-03-13, 2021-03-14]
12 [2021-03-15, 2021-03-16, 2021-03-17, 2021-03-18, 2021-03-19, 2021-03-20, 2021-03-21]
13 [2021-03-22, 2021-03-23, 2021-03-24, 2021-03-25, 2021-03-26, 2021-03-27, 2021-03-28]
14 [2021-03-29, 2021-03-30, 2021-03-31, 2021-04-01, 2021-04-02, 2021-04-03, 2021-04-04]
15 [2021-04-05, 2021-04-06, 2021-04-07, 2021-04-08, 2021-04-09, 2021-04-10, 2021-04-11]
16 [2021-04-12, 2021-04-13, 2021-04-14, 2021-04-15, 2021-04-16, 2021-04-17, 2021-04-18]
17 [2021-04-19, 2021-04-20, 2021-04-21, 2021-04-22, 2021-04-23, 2021-04-24, 2021-04-25]
18 [2021-04-26, 2021-04-27, 2021-04-28, 2021-04-29, 2021-04-30, 2021-05-01, 2021-05-02]
19 [2021-05-03, 2021-05-04, 2021-05-05, 2021-05-06, 2021-05-07, 2021-05-08, 2021-05-09]
20 [2021-05-10, 2021-05-11, 2021-05-12, 2021-05-13, 2021-05-14, 2021-05-15, 2021-05-16]
21 [2021-05-17, 2021-05-18, 2021-05-19, 2021-05-20, 2021-05-21, 2021-05-22, 2021-05-23]
22 [2021-05-24, 2021-05-25, 2021-05-26, 2021-05-27, 2021-05-28, 2021-05-29, 2021-05-30]
23 [2021-05-31, 2021-06-01, 2021-06-02, 2021-06-03, 2021-06-04, 2021-06-05, 2021-06-06]
24 [2021-06-07, 2021-06-08, 2021-06-09, 2021-06-10, 2021-06-11, 2021-06-12, 2021-06-13]
25 [2021-06-14, 2021-06-15, 2021-06-16, 2021-06-17, 2021-06-18, 2021-06-19, 2021-06-20]
26 [2021-06-21, 2021-06-22, 2021-06-23, 2021-06-24, 2021-06-25, 2021-06-26, 2021-06-27]
27 [2021-06-28, 2021-06-29, 2021-06-30, 2021-07-01, 2021-07-02, 2021-07-03, 2021-07-04]
28 [2021-07-05, 2021-07-06, 2021-07-07, 2021-07-08, 2021-07-09, 2021-07-10, 2021-07-11]
29 [2021-07-12, 2021-07-13, 2021-07-14, 2021-07-15, 2021-07-16, 2021-07-17, 2021-07-18]
30 [2021-07-19, 2021-07-20, 2021-07-21, 2021-07-22, 2021-07-23, 2021-07-24, 2021-07-25]
31 [2021-07-26, 2021-07-27, 2021-07-28, 2021-07-29, 2021-07-30, 2021-07-31, 2021-08-01]
32 [2021-08-02, 2021-08-03, 2021-08-04, 2021-08-05, 2021-08-06, 2021-08-07, 2021-08-08]
33 [2021-08-09, 2021-08-10, 2021-08-11, 2021-08-12, 2021-08-13, 2021-08-14, 2021-08-15]
34 [2021-08-16, 2021-08-17, 2021-08-18, 2021-08-19, 2021-08-20, 2021-08-21, 2021-08-22]
35 [2021-08-23, 2021-08-24, 2021-08-25, 2021-08-26, 2021-08-27, 2021-08-28, 2021-08-29]
36 [2021-08-30, 2021-08-31, 2021-09-01, 2021-09-02, 2021-09-03, 2021-09-04, 2021-09-05]
37 [2021-09-06, 2021-09-07, 2021-09-08, 2021-09-09, 2021-09-10, 2021-09-11, 2021-09-12]
38 [2021-09-13, 2021-09-14, 2021-09-15, 2021-09-16, 2021-09-17, 2021-09-18, 2021-09-19]
39 [2021-09-20, 2021-09-21, 2021-09-22, 2021-09-23, 2021-09-24, 2021-09-25, 2021-09-26]
40 [2021-09-27, 2021-09-28, 2021-09-29, 2021-09-30, 2021-10-01, 2021-10-02, 2021-10-03]
41 [2021-10-04, 2021-10-05, 2021-10-06, 2021-10-07, 2021-10-08, 2021-10-09, 2021-10-10]
42 [2021-10-11, 2021-10-12, 2021-10-13, 2021-10-14, 2021-10-15, 2021-10-16, 2021-10-17]
43 [2021-10-18, 2021-10-19, 2021-10-20, 2021-10-21, 2021-10-22, 2021-10-23, 2021-10-24]
44 [2021-10-25, 2021-10-26, 2021-10-27, 2021-10-28, 2021-10-29, 2021-10-30, 2021-10-31]
45 [2021-11-01, 2021-11-02, 2021-11-03, 2021-11-04, 2021-11-05, 2021-11-06, 2021-11-07]
46 [2021-11-08, 2021-11-09, 2021-11-10, 2021-11-11, 2021-11-12, 2021-11-13, 2021-11-14]
47 [2021-11-15, 2021-11-16, 2021-11-17, 2021-11-18, 2021-11-19, 2021-11-20, 2021-11-21]
48 [2021-11-22, 2021-11-23, 2021-11-24, 2021-11-25, 2021-11-26, 2021-11-27, 2021-11-28]
49 [2021-11-29, 2021-11-30, 2021-12-01, 2021-12-02, 2021-12-03, 2021-12-04, 2021-12-05]
50 [2021-12-06, 2021-12-07, 2021-12-08, 2021-12-09, 2021-12-10, 2021-12-11, 2021-12-12]
51 [2021-12-13, 2021-12-14, 2021-12-15, 2021-12-16, 2021-12-17, 2021-12-18, 2021-12-19]
52 [2021-12-20, 2021-12-21, 2021-12-22, 2021-12-23, 2021-12-24, 2021-12-25, 2021-12-26]
53 [2021-12-27, 2021-12-28, 2021-12-29, 2021-12-30, 2021-12-31]
public static Map<Integer, List<String>> weekOfYear(Integer year) {
Calendar start = Calendar.getInstance();
start.set(year, Calendar.JANUARY, 1);
Calendar end = Calendar.getInstance();
end.set(year + 1, Calendar.JANUARY, 0);
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
List<String> dateList = new ArrayList<>();
Map<Integer, List<String>> map = new HashMap<>();
while (start.compareTo(end) <= 0) {
start.get(Calendar.DAY_OF_WEEK);
dateList.add(format.format(start.getTime()));
start.set(Calendar.DATE, start.get(Calendar.DATE) + 1);
}
for (String date : dateList) {
DateTime dateTime = new DateTime(date, DatePattern.NORM_DATE_FORMAT);
int i = dateTime.weekOfYear();
List<String> list;
if (map.containsKey(i)) {
list = map.get(i);
} else {
list = new ArrayList<>();
}
list.add(date);
map.put(i, list);
}
Set<Integer> keySet = map.keySet();
int maxKey = 0;
for (Integer integer : keySet) {
if (integer > maxKey) {
maxKey = integer;
}
}
List<String> maxList = map.get(maxKey);
String s = maxList.get(maxList.size() - 1);
boolean contains = s.contains("12-31");
if (!contains) {
List<String> initList = map.get(1);
List<String> listMore = new ArrayList<>();
Iterator<String> iterator = initList.iterator();
while (iterator.hasNext()) {
String s1 = iterator.next();
if (s1.contains("12-2") || s1.contains("12-3")) {
listMore.add(s1);
iterator.remove();
}
}
map.put(maxKey + 1, listMore);
}
return map;
}