package com.xxx.xxx.xxx.code.controller; 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 DateUtils { //字符串转日期的方法:convertString2Date public static Date convertString2Date(String format, String dateStr) { SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format); try { Date date = simpleDateFormat.parse(dateStr); return date; } catch (ParseException e) { e.printStackTrace(); } return null; } //日期转字符串的方法:convertDate2String public static String convertDate2String(String format, Date date) { SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format); return simpleDateFormat.format(date); } /** * 获取固定间隔时刻集合 * * @param start 开始时间 * @param end 结束时间 * @param interval 间隔时间 * @param rest 休息时间 * @return */ public static List<String> getIntervalTimeList(String start, String end, int interval, int rest) { //开始时间 Date startDate = DateUtils.convertString2Date("HH:mm", start); //结束时间 Date endDate = DateUtils.convertString2Date("HH:mm", end); List<String> list = new ArrayList<>(); int i = 0; //getTime()把时间转化为毫秒 如果开始时间小于结束时间 while (startDate.getTime() <= endDate.getTime()) { ++i; //就把startDate转化为String放入list 直到大于结束时间 String str = DateUtils.convertDate2String("HH:mm", startDate); list.add(str); Calendar calendar = Calendar.getInstance(); //getTime()把毫秒转化为时间 calendar.setTime(startDate); //传入间隔时间 并且加上间隔时间 calendar.add(Calendar.MINUTE, interval); if (i == 2) { //getTime()把毫秒转化为时间 calendar.setTime(startDate); //传入间隔时间 并且加上间隔时间 calendar.add(Calendar.MINUTE, rest); startDate = calendar.getTime(); i = 0; } else { startDate = calendar.getTime(); } //暂时用不到这些判断 // if (calendar.getTime().getTime() > endDate.getTime()) { // if (!startDate.equals(endDate)) { // String string = DateUtils.convertDate2String("HH:mm", endDate); // list.add(string); // } // startDate = calendar.getTime(); // System.out.println("--" + startDate); // } else { // startDate = calendar.getTime(); // System.out.println("+++" + startDate); // } } return list; } public static void main(String[] args) throws ParseException { //开始、结束、间隔、休息 String str = "09:00"; String end = "18:00"; int interval = 60; int rest = 10; List<String> list = DateUtils.getIntervalTimeList(str, end, interval, rest); // for (String s : list) { // System.out.println(s); // } int j = 0; for (int i = 0; i < list.size(); i++) { // ++j; // if (j == 3) { // String s = list.get(i); // Date startDate = DateUtils.convertString2Date("HH:mm", s); // Date afterDate = new Date(startDate.getTime() + 600000 * 2); // //日期转字符串 // String ss = DateUtils.convertDate2String("HH:mm", afterDate); // //System.out.println("时间------" + ss); // j = 0; // System.out.println("ss:" + ss); // } else { // String s = list.get(i); // System.out.println("s:" + s); // } } System.out.println(list); } }
在这个博主基础之上新增的感谢https://blog.csdn.net/zhangzehai2234/article/details/51338338