需求:获取2个String类型的时间,时间差内的值
比如:给定一个 开始时间:2018010105,结束时间:2018010108
返回一个集合:List 包含2018010106,2018010107
public static void main(String[] args){ String str1 = "2018010105"; String str2 = "2018010108"; List<String> between = getBetween(str1, str2); System.out.println(between); } private static List<String> getBetween(String str1, String str2){ //定义一个接受时间的集合 List<String> list = new ArrayList<>(); //按给到的数据格式格式化时间,本文为2018010108,即yyyyMMddHH,若为2018-01-01 05:00:00,则为yyyy-MM-dd HH:mm:ss SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHH"); try { //将String类型转化为Date类型 Date startdate= sdf.parse(str1); Date enddate = sdf.parse(str2); //获取一个Calendar对象并可以进行时间的计算,时区的指定 Calendar start = Calendar.getInstance(); //使用给定的 Date 设置此 Calendar 的时间 start.setTime(startdate); //遍历时间段 while (startdate.getTime()<=enddate.getTime()){ //将时间添加到list中 list.add(sdf.format(startdate)); // 根据日历的规则,为给定的日历字段添加或减去指定的时间量 start.add(Calendar.HOUR_OF_DAY,1); //更新时间 startdate = start.getTime(); } //去头去尾 list.remove(0); list.remove(list.size()-1); }catch (ParseException e){ e.printStackTrace(); } return list; }