测试:
按1分钟分割
@Test public void myTest(){ //按1分钟分割 //注意:当开始时间为00:00:00时,截止时间不能写为00:59:59(当开始时间累加到00:59:00时,依然小于截止时间,继续加一分钟变成00:00:00,进入死循环) Map<String,String> map = getQueryTime("00:00:00", "00:59:00", "HH:mm:ss", Calendar.MINUTE, 1); System.out.println(map); }
结果:
按一天分割
@Test public void myTest(){ //按1天分割 Map<String,String> map = getQueryTime("2021-05-01", "2021-05-18", "yyyy-MM-dd", Calendar.DAY_OF_MONTH, 1); System.out.println(map); }
结果:
逻辑代码:
/** * 循环条件为开始时间小于截止时间,若满足条件,开始时间就加上时间间隔 * @param startTime 开始时间 * @param endTime 截止时间 * @param format 返回数据的时间格式 * @param unit 按分钟、天划分(Calendar.MINUTE,Calendar.DAY_OF_MONTH,..........) * @param interval 时间间隔(1,2,3,......) * @return */ public Map<String,String> getQueryTime(String startTime, String endTime, String format, int unit, int interval){ LinkedHashMap<String,String> timeMap = Maps.newLinkedHashMap(); try { while (startTime.compareTo(endTime)<0){ timeMap.put(startTime,startTime); startTime = getDateTimeByInterval(startTime,interval,unit,format); } timeMap.put(startTime,startTime); } catch (Exception e) { e.getMessage(); } return timeMap; } private String getDateTimeByInterval(String readingTime,int interval,int unit,String format){ Calendar calendar = Calendar.getInstance(); try { SimpleDateFormat dateFormat = new SimpleDateFormat(format); Date date = dateFormat.parse(readingTime); calendar.setTime(date); calendar.add(unit, interval); } catch (ParseException e) { e.printStackTrace(); } return new SimpleDateFormat(format).format(calendar.getTime()); }
原文:https://www.cnblogs.com/yzhmj/p/14784409.html