JAVA中将一个时间段按固定间隔拆分为List

通过给定的固定的时间段,输出在该时间段内固定间隔的每个时刻的List集合,如果最后的时间间隔不够的话,将结束时间作为最后的时刻。

 

 

 /*** 获取固定间隔时刻集合* @param start 开始时间* @param end 结束时间* @param interval 时间间隔(单位:分钟)* @return*/public static List getIntervalTimeList(String start,String end,int interval){Date startDate = DateTimeUtils.convertString2Date("HH:mm:ss",start);Date endDate = DateTimeUtils.convertString2Date("HH:mm:ss",end);List list = new ArrayList<>();while(startDate.getTime()<=endDate.getTime()){list.add(DateTimeUtils.convertDate2String("HH:mm:ss",startDate));Calendar calendar = Calendar.getInstance();calendar.setTime(startDate);calendar.add(Calendar.MINUTE,interval);if(calendar.getTime().getTime()>endDate.getTime()){if(!startDate.equals(endDate)){list.add(DateTimeUtils.convertDate2String("HH:mm:ss",endDate));}startDate = calendar.getTime();}else{startDate = calendar.getTime();}}return list;}

 

该方法中用到的字符串转日期的方法:convertStringDate

public class DateUtils {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;}public static void main(String[] args) {System.out.println(convertString2Date("HH:mm:ss","19:00:00"));}
}

 

该方法中用到的日期转字符串的方法:convertDate2String

package cn.jiguang.ad.example.unittesting.util;import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;public class DateUtils {public static String convertDate2String(String format,Date date) {SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format);return simpleDateFormat.format(date);}public static void main(String[] args) {System.out.println(convertDate2String("HH:mm:ss",new Date()));}
}

 

测试方法:

 

List list = DateTimeUtils.getIntervalTimeList("12:00:00","20:30:00",60);for (String s : list) {System.out.println(s);}

 

 

 

 

 

测试结果:

 

 

 

将时间按照5分钟的间隔拆分到不同的数组中,提供一种简陋的解决思路,具体方法可根据具体情况做进一步的优化

public static void main(String[] args) {String[] dateArr = {"11:01", "11:02", "11:03", "11:06", "11:10", "11:15", "11:20", "23: 40"};SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm");Map> map = new HashMap<>();for (int i = 0; i <= 25; i ++) {map.put(i, new ArrayList<>());}Map minuteMap = new HashMap<>();for (String s : dateArr) {try {Date date = simpleDateFormat.parse(s);Calendar calendar = Calendar.getInstance();calendar.setTime(date);int hour = calendar.get(Calendar.HOUR_OF_DAY);List sss = map.get(hour);sss.add(s);map.put(hour, sss);System.out.println(s + ": hour: " + hour);int min = calendar.get(Calendar.MINUTE);System.out.println(s + ": minute: " + min);minuteMap.put(s, min);} catch (ParseException e) {e.printStackTrace();}}System.out.println(map);Map> kkk = new HashMap<>();for (Integer integer : map.keySet()) {List list = map.get(integer);for (String s : list) {Integer minute = minuteMap.get(s);if (minute == 0) {List t = kkk.get(integer + "-0");if (t == null) {t = new ArrayList<>();}t.add(s);kkk.put(integer + "-0", t);} else {int n = minute % 60;if (n > 0 && n <= 5) {List t = kkk.get(integer + "-0");if (t == null) {t = new ArrayList<>();}t.add(s);kkk.put(integer + "-0", t);} else if ( n >5 && n <= 10 ) {List t = kkk.get(integer + "-1");if (t == null) {t = new ArrayList<>();}t.add(s);kkk.put(integer + "-1", t);} else if ( n >10 && n <= 15 ) {List t = kkk.get(integer + "-2");if (t == null) {t = new ArrayList<>();}t.add(s);kkk.put(integer + "-2", t);} else if ( n >15 && n <= 20 ) {List t = kkk.get(integer + "-3");if (t == null) {t = new ArrayList<>();}t.add(s);kkk.put(integer + "-3", t);} else if ( n >20 && n <= 25 ) {List t = kkk.get(integer + "-4");if (t == null) {t = new ArrayList<>();}t.add(s);kkk.put(integer + "-4", t);}}}}}

 


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部