這篇是回答一位網友私信問我的問題

反正本來也是打算要寫的內容之一,就讓我用快問快答回答吧

 


 

Q: 如何用Java寫一個時間遞減/遞增陣列

 

如下

public class TimePlayground {

    public static void main(String[] args) {
        /**做一個時間陣列(2020/10/10 10:00:00~2020/10/11 16:00:00)*/
        ArrayList<String> timeArray = makeTimeArray("2020/10/10 10:00:00", 3600
                , 30);
        System.out.println("全部時間:\n "+timeArray);

    }

   
    private static ArrayList<String> makeTimeArray(String dateTime
            , int inter, int arrayLength) {
        try {
            /**取得時間日期格式*/
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
            /**做一個空白陣列*/
            ArrayList<String> returnArray = new ArrayList<>();
            /**先把起始日期時間加進陣列*/
            returnArray.add(dateTime);
            /**根據想要的陣列長度跑迴圈*/
            for (int i = 0; i < arrayLength; i++) {
                /**將字串時間轉化為Date類別*/
                Date startDate = sdf.parse(returnArray.get(i));
                /**再將Date類別取得到的時間轉給Calender類別使用*/
                Calendar calendar = Calendar.getInstance();
                /**在Calender的setTime方法中把時間設定進去*/
                calendar.setTime(startDate);
                /**calender中可作時間的加減功能;add(要被加減的單位,多少秒)*/
                calendar.add(Calendar.SECOND, inter);
                /**將結果加入要回傳的陣列中*/
                returnArray.add(sdf.format(calendar.getTime()));
            }
            return returnArray;
        } catch (ParseException e) {
            return new ArrayList<>();
        }
    }//
}

 

 


 

Q: 如何從剛才的陣列中濾出我想要的時間段?

 

如下

 

public class TimePlayground {

    public static void main(String[] args) {
        /**做一個時間陣列(2020/10/10 10:00:00~2020/10/11 16:00:00)*/
        ArrayList<String> timeArray = makeTimeArray("2020/10/10 10:00:00", 3600
                , 30);
        System.out.println("全部時間:\n "+timeArray);
        /**濾出指定的時間(2020/10/10 20:00:00~2020/10/11 04:00:00)*/
        ArrayList<String> filteredArray = filterTime("2020/10/10 19:00:00","2020/10/11 05:00:00",timeArray);
        System.out.println("濾出的時間:\n "+filteredArray);

    }

    private static ArrayList<String> filterTime(String startTime
            , String endTime, ArrayList<String> originArray) {
        try {
            ArrayList<String> returnArray = new ArrayList<>();
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
            for (int i = 0; i < originArray.size(); i++) {
                Date start, end, now;
                /**將指定時間字串轉化為Date類別*/
                start = sdf.parse(startTime);
                end = sdf.parse(endTime);
                now = sdf.parse(originArray.get(i));
                /**如果欲濾出指定時間,並回傳*/
                if (now.after(start) && now.before(end)) {
                    returnArray.add(sdf.format(now));
                }
            }
            return returnArray;
        } catch (ParseException e) {
            return new ArrayList<>();
        }
    }


    private static ArrayList<String> makeTimeArray(String dateTime
            , int inter, int arrayLength) {
        try {
            /**取得時間日期格式*/
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
            /**做一個空白陣列*/
            ArrayList<String> returnArray = new ArrayList<>();
            /**先把起始日期時間加進陣列*/
            returnArray.add(dateTime);
            /**根據想要的陣列長度跑迴圈*/
            for (int i = 0; i < arrayLength; i++) {
                /**將字串時間轉化為Date類別*/
                Date startDate = sdf.parse(returnArray.get(i));
                /**再將Date類別取得到的時間轉給Calender類別使用*/
                Calendar calendar = Calendar.getInstance();
                /**在Calender的setTime方法中把時間設定進去*/
                calendar.setTime(startDate);
                /**calender中可作時間的加減功能;add(要被加減的單位,多少秒)*/
                calendar.add(Calendar.SECOND, inter);
                /**將結果加入要回傳的陣列中*/
                returnArray.add(sdf.format(calendar.getTime()));
            }
            return returnArray;
        } catch (ParseException e) {
            return new ArrayList<>();
        }
    }//
}

 

賀,搞定,掰 :D

 

 

 

 

 

 

 

arrow
arrow
    創作者介紹
    創作者 碼農日常 的頭像
    碼農日常

    碼農日常大小事

    碼農日常 發表在 痞客邦 留言(6) 人氣()