這篇是回答一位網友私信問我的問題
反正本來也是打算要寫的內容之一,就讓我用快問快答回答吧
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
文章標籤
全站熱搜
留言列表