/**
* 按照指定小时分割时间段
* @param dateType 类型 M/D/H/N -->每月/每天/每小时/每分钟
* @param dBegin开始时间
* @param dEnd结束时间
* @param time 指定小时(如:1、2、3、4)
* @return
*/
public static List<String> findDates(String dateType, Date dBegin, Date dEnd,int time) throws Exception {
List<String> listDate = new ArrayList<>();
listDate.add(new SimpleDateFormat("yyyy-MM-dd HH:mm").format(dBegin));
Calendar calBegin = Calendar.getInstance();
calBegin.setTime(dBegin);
Calendar calEnd = Calendar.getInstance();
calEnd.setTime(dEnd);
while (calEnd.after(calBegin)) {
if ("H".equals(dateType)){
calBegin.add(Calendar.HOUR, time);
}
if ("M".equals(dateType)){
calBegin.add(Calendar.MONTH, time);
}
if ("D".equals(dateType)){
calBegin.add(Calendar.DATE, time);
}
if ("N".equals(dateType)){
calBegin.add(Calendar.MINUTE , time);
}
if (calEnd.after(calBegin)){
listDate.add(new SimpleDateFormat("yyyy-MM-dd HH:mm").format(calBegin.getTime()));
}
else{
// listDate.add(new SimpleDateFormat("yyyy-MM-dd HH:mm").format(calEnd.getTime()));
}
}
return listDate;
}
public static void main(String[] args) throws Exception {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
String startDate = "2021-05-07".concat(" 00:00");
String endDate = "2021-05-07".concat(" 23:59");
Date dBegin = sdf.parse(startDate);
Date dEnd = sdf.parse(endDate);
List<String> list = findDates("H", dBegin, dEnd,2);
for (String str :list){
System.out.println(str);
}
}
输出结果
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210609112245119.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80OTQ1NjAxMw==,size_16,color_FFFFFF,t_70)
如果将else的注释打开,则输出结果如下:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210609112340780.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80OTQ1NjAxMw==,size_16,color_FFFFFF,t_70)