/**
* 按照指定小时分割时间段
* @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);
}
}
输出结果
如果将else的注释打开,则输出结果如下:
版权声明:本文为weixin_49456013原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。