首页 > 编程知识 正文

java 时间间隔

时间:2023-05-05 08:35:03 阅读:225868 作者:3019

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

 

 

/** * 获取固定间隔时刻集合 * @param start 开始时间 * @param end 结束时间 * @param interval 时间间隔(单位:分钟) * @return */ public static List<String> getIntervalTimeList(String start,String end,int interval){ Date startDate = DateTimeUtils.convertString2Date("HH:mm:ss",start); Date endDate = DateTimeUtils.convertString2Date("HH:mm:ss",end); List<String> 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<String> 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<Integer, List<String>> map = new HashMap<>(); for (int i = 0; i <= 25; i ++) { map.put(i, new ArrayList<>()); } Map<String, Integer> 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<String> 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<String, List<String>> kkk = new HashMap<>(); for (Integer integer : map.keySet()) { List<String> list = map.get(integer); for (String s : list) { Integer minute = minuteMap.get(s); if (minute == 0) { List<String> 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<String> 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<String> 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<String> 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<String> 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<String> t = kkk.get(integer + "-4"); if (t == null) { t = new ArrayList<>(); } t.add(s); kkk.put(integer + "-4", t); } } } } }

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。