Java-按照指定小时分割时间段

  • Post author:
  • Post category:java


/**
	 * 按照指定小时分割时间段
	 * @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 版权协议,转载请附上原文出处链接和本声明。