CustomDateUtils.java
2.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
package com.skua.tool.util;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
/**
* @author sonin
* @date 2021/12/29 11:06
*/
public class CustomDateUtils {
/**
* 根据(开始时间, 结束时间)获取每一个时间间隔的数据, 主要用于eCharts图标xData
*
* @param startTime
* @param endTime
* @param format
* @return
*/
public static List<String> interval(String startTime, String endTime, String format, int field, int amount) {
List<String> intervalList = new ArrayList<>();
try {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format);
Date startDate = simpleDateFormat.parse(startTime);
Date endDate = simpleDateFormat.parse(endTime);
List<Date> dateList = new ArrayList<>();
dateList.add(startDate);
Calendar calendarOfStart = Calendar.getInstance();
// 使用给定的 Date 设置此 Calendar 的时间
calendarOfStart.setTime(startDate);
Calendar calendarOfEnd = Calendar.getInstance();
// 使用给定的 Date 设置此 Calendar 的时间
calendarOfEnd.setTime(endDate);
// 测试此日期是否在指定日期之后
while (endDate.compareTo(calendarOfStart.getTime()) >= 0) {
// 根据日历的规则,为给定的日历字段添加或减去指定的时间量
calendarOfStart.add(field, amount);
if (endDate.compareTo(calendarOfStart.getTime()) >= 0 && !dateList.contains(calendarOfStart.getTime())) {
dateList.add(calendarOfStart.getTime());
}
}
for (Date item : dateList) {
intervalList.add(simpleDateFormat.format(item));
}
} catch (Exception e) {
e.printStackTrace();
}
return intervalList;
}
public static List<String> intervalByHour(String startTime, String endTime, String format) {
return interval(startTime, endTime, format, Calendar.HOUR_OF_DAY, 1);
}
public static List<String> intervalByDay(String startTime, String endTime, String format) {
return interval(startTime, endTime, format, Calendar.DAY_OF_MONTH, 1);
}
public static List<String> intervalByMonth(String startTime, String endTime, String format) {
return interval(startTime, endTime, format, Calendar.MONTH, 1);
}
public static List<String> intervalByYear(String startTime, String endTime, String format) {
return interval(startTime, endTime, format, Calendar.YEAR, 1);
}
}