這篇是回答一位網友私信問我的問題
反正本來也是打算要寫的內容之一,就讓我用快問快答回答吧
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
文章標籤
全站熱搜
Java 我有學一下下 但是物件導向始終困擾我 你可能不知道 我們那個年代 是一行一行照時間序 照流程圖 寫的 不太一樣 大一 學的是 PASCAL 想當年啊~~~~~
嗨爺爺休假愉快 天哪!居然是PASCAL 僅有耳聞還真的沒實際看過!! 爺爺還真是多才多藝...連Java也小略精通 看來現在寫程式真的很幸福呢... 謝謝爺爺您的留言、推文及拍手鼓勵!
這讓我想到一位21歲靠著聯盟行銷 賺百萬的男人 現在25~26吧 他的父母親讓他一年時間網站行銷 如果失敗就回國 他就一年很努力的做 一開始好幾個小時 之後慢慢較少的感覺吧!?? 到了最後3個月才看到成果 之後就靠教線上課程 賺了很多錢
莉啊歡迎來訪 這是你下一篇小說的情節嗎XDDDDDDDD
好強....
沒什麼啦~就是上班會用的東西而已,每天接觸就熟了 謝謝你的鼓勵:D
原來志工爺爺也是電腦高手,讓我刮目相看,他一定是裝老的; 21歲靠著聯盟行銷賺錢的年輕人叫Jerry,他的課我有報名,教得很好很仔細,手把手一步一步讓我成功架好一個網站,他為人誠懇又謙虛,是一位很優秀的年輕人。
呼應#2 原來他說的人就是Jerry阿..長知識了 的確寫部落格也是有這一點目的存在啦,不過感覺還好久以後了(遠目 爺爺其實根本不老吧,他說他兒子最近要當兵找工作,應該跟我差不多年紀 所以我之前就再猜爺爺大概50多歲而已吧..
晚安來拍拍~ 高手在人間!!!
我還差得遠!哈哈
拍拍拍拍拍手了
拍手有助血液循環!