Java約課時間段控制-傳入開始、結束、間隔、休息時間然後進行輸出一個集合

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章