从当天零点开始,每两个小时为一个时间段,获取当前及往后 4 个时间段

比如现在 16.37,使用getDateMenus()获取到的值

Sat Aug 21 16:00:00 CST 2021
Sat Aug 21 18:00:00 CST 2021
Sat Aug 21 20:00:00 CST 2021
Sat Aug 21 22:00:00 CST 2021
Sun Aug 22 00:00:00 CST 2021

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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

public class DateUtil {

/**
* 定义两种时间格式
*/
public static final String PATTERN_YYYYMMDDHH = "yyyyMMddHH";
public static final String PATTERN_YYYY_MM_DDHHMM = "yyyy-MM-dd HH:mm";

/***
* 从yyyy-MM-dd HH:mm格式转成yyyyMMddHH格式
* @param dateStr
* @return
*/
public static String formatStr(String dateStr, String opattern, String npattern) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(opattern);
try {
Date date = simpleDateFormat.parse(dateStr);
simpleDateFormat = new SimpleDateFormat(npattern);
return simpleDateFormat.format(date);
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}

/***
* 获取指定日期的凌晨
* @return
*/
public static Date toDayStartHour(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
Date start = calendar.getTime();
return start;
}


/***
* 时间增加N分钟
* @param date
* @param minutes
* @return
*/
public static Date addDateMinutes(Date date, int minutes) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
// 24小时制
calendar.add(Calendar.MINUTE, minutes);
date = calendar.getTime();
return date;
}

/**
* 时间递增N小时
* @param date 传入日期(把时间段日期传入)
* @param hour 递增时间(小时)
* @return
*/
public static Date addDateHour(Date date, int hour) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
// 24小时制
calendar.add(Calendar.HOUR, hour);
date = calendar.getTime();
return date;
}

/***
* 获取时间菜单
* 从当前时间所在时间段的整点开始,往后四个时间段
* @return
*/
public static List<Date> getDateMenus() {
//定义一个List<Date>集合,存储所有时间段
List<Date> dates = getDates(12);
//判断当前时间属于哪个时间范围
Date now = new Date();
for (Date cdate : dates) {
//开始时间<=当前时间<开始时间+2小时
if (cdate.getTime() <= now.getTime() && now.getTime() < addDateHour(cdate, 2).getTime()) {
now = cdate;
break;
}
}

//当前需要显示的时间菜单
//从当前时间段开始往后4个时间段,一共5个时间段
List<Date> dateMenus = new ArrayList<Date>();
for (int i = 0; i < 5; i++) {
dateMenus.add(addDateHour(now, i * 2));
}
return dateMenus;
}

/***
* 指定时间往后N个时间间隔
* @param hours 获取多少个时间间隔
* @return
*/
public static List<Date> getDates(int hours) {
List<Date> dates = new ArrayList<Date>();
//循环12次
//从当前日期的凌晨开始
Date date = toDayStartHour(new Date());
for (int i = 0; i < hours; i++) {
//每次递增2小时,将每次递增的时间存入到List<Date>集合中
dates.add(addDateHour(date, i * 2));
}
return dates;
}

/***
* 时间转成需要的格式类型
* @param date 需要转化的时间
* @param pattern 格式
* @return
*/
public static String data2str(Date date, String pattern) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
return simpleDateFormat.format(date);
}