俩个日期计算小时,天数,月份,还有时间组合
以下方法就可以直接调用
/** * 计算月数 * @param startDate 开始时间 * @param endDate 结束时间 */ @ApiOperation("月数获取") public static int mouthsBetween(Date startDate, Date endDate) { Calendar startCalendar = new GregorianCalendar(); startCalendar.setTime(startDate); Calendar endCalendar = new GregorianCalendar(); endCalendar.setTime(endDate); //计算月份和年份 int diffYear = endCalendar.get(Calendar.YEAR) - startCalendar.get(Calendar.YEAR); int diffMonth = diffYear * 12 endCalendar.get(Calendar.MONTH) - startCalendar.get(Calendar.MONTH); System.out.println("相差月份 " diffMonth " 相差年份 " diffYear); return diffMonth; } /** * 计算天数 * @param startDate 开始时间 * @param endDate 结束时间 */ @ApiOperation("天数获取") public static long daysBetween(Date startDate, Date endDate) { long betweenDate = (endDate.getTime() - startDate.getTime())/(60*60*24*1000); return betweenDate; } /** * 计算小时 * @param startDate 开始时间 * @param endDate 结束时间 */ @ApiOperation("小数获取") public static long hoursBetween(Date startDate, Date endDate) { long betweenDate = (endDate.getTime() - startDate.getTime())/(60*60*1000); return betweenDate; }
1) 以下方法可直接调用,显示的数据格式
2020-1-11 01:00:00 2020-1-11 01:59:59
2020-1-11 02:00:00 2020-1-11 02:59:59
2020-1-11 03:00:00 2020-1-11 03:59:59
......
1 /** 2 * 小时的拼接 3 * @param startDate 开始时间 4 * @param endDate 结束时间 5 */ 6 @ApiOperation("小时的拼接") 7 public static List<String> getTodayHours(String startDate,String endDate) throws Exception { 8 SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 9 SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd HH");10 //date1 转换以(2020-01-11 10:00:00)展示11 Date date1 = simpleDateFormat1.parse(startDate);12 String start=simpleDateFormat.format(date1);13 Date date2 = simpleDateFormat.parse(endDate);14 //初始时间拼接 date1(2020-01-11 10:00:00),initialTime(2020-01-11 10:59:59)15 List dateList = new ArrayList<String>();16 Calendar initialCalendar = Calendar.getInstance();17 List tlist=new ArrayList<String>();18 initialCalendar.setTime(date1);19 initialCalendar.add(Calendar.MINUTE, 59);20 initialCalendar.add(Calendar.SECOND, 59);21 Date initialDate = initialCalendar.getTime();22 String initial=simpleDateFormat.format(initialDate);23 tlist.add(start);24 tlist.add(initial);25 dateList.add(tlist);26 //计算时间27 Date startDate1 = simpleDateFormat.parse(startDate);28 Long hour=hoursBetween(startDate1,date2);29 //获取24内的各时间点,可能跨天30 for (int i=0; i<hour; i ) {31 List timeList=new ArrayList<String>();32 //给当前时间加一秒33 initialCalendar.add(Calendar.SECOND, 1);34 Date d1=initialCalendar.getTime();35 //转成时间转成字符串固定格式36 String str1=simpleDateFormat.format(d1);37 //给当前时间加59分59秒38 initialCalendar.add(Calendar.MINUTE, 59);39 initialCalendar.add(Calendar.SECOND, 59);40 Date d2 = initialCalendar.getTime();41 //注意时间转换问题42 Date replaceTime=d2;43 String str2=simpleDateFormat.format(replaceTime);44 timeList.add(str1);45 timeList.add(str2);46 //System.out.println("添加到数组中的数据: " timeList);47 //为下一个时间段 设置初始值48 initialCalendar.setTime(d2);49 dateList.add(timeList);50 }51 return dateList;52 }
2)以下方法可直接调用,显示的数据格式
2020-1-11 00:00:00 2020-1-11 23:59:59
2020-1-12 00:00:00 2020-1-12 23:59:59
2020-1-13 00:00:00 2020-1-13 23:59:59
1 /** 2 * 天数的拼接 3 * @param startDate 开始时间 4 * @param endDate 结束时间 5 */ 6 @ApiOperation("天数的拼接") 7 public static List<String> getTodays(String startDate,String endDate) throws 8 Exception { 9 SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");10 SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd");11 12 //date1 转换以(2020-01-11 00:00:00)展示13 Date date1 = simpleDateFormat1.parse(startDate);14 String start=simpleDateFormat.format(date1);15 Date date2 = simpleDateFormat.parse(endDate);16 //startDate1为准确计算天数17 Date startDate1 = simpleDateFormat.parse(startDate);18 long today=daysBetween(startDate1,date2);19 20 //初始时间拼接 date1(2020-01-11 00:00:00),initialTime(2020-01-11 23:59:59)21 List dateList = new ArrayList<String>();22 Calendar initialCalendar = Calendar.getInstance();23 //天数为124 List tlist = new ArrayList<String>();25 initialCalendar.setTime(date1);26 initialCalendar.add(Calendar.HOUR, 23);27 initialCalendar.add(Calendar.MINUTE, 59);28 initialCalendar.add(Calendar.SECOND, 59);29 Date initialDate = initialCalendar.getTime();30 String initial = simpleDateFormat.format(initialDate);31 tlist.add(start);32 tlist.add(initial);33 dateList.add(tlist);34 //获取24内的各时间点,可能跨天35 System.out.println("天数是 " today);36 for (int i = 0; i < today; i ) {37 List timeList = new ArrayList<String>();38 //给当前时间加一秒39 initialCalendar.add(Calendar.SECOND, 1);40 Date d1 = initialCalendar.getTime();41 //转成时间转成字符串固定格式42 String str1 = simpleDateFormat.format(d1);43 //给当前时间加23时59分59秒44 initialCalendar.add(Calendar.HOUR, 23);45 initialCalendar.add(Calendar.MINUTE, 59);46 initialCalendar.add(Calendar.SECOND, 59);47 Date d2 = initialCalendar.getTime();48 //注意时间转换问题49 Date replaceTime = d2;50 String str2 = simpleDateFormat.format(replaceTime);51 timeList.add(str1);52 timeList.add(str2);53 //System.out.println("添加到数组中的数据: " timeList);54 //为下一个时间段 设置初始值55 initialCalendar.setTime(d2);56 dateList.add(timeList);57 }58 59 return dateList;60 }
3)以下方法可直接调用,显示的数据格式
2020-1-01 2020-1-31
2020-2-01 2020-2-29
2020-3-01 2020-3-31
1 /** 2 * 月数的拼接 3 * @param startDate 开始时间 4 * @param endDate 结束时间 5 */ 6 @ApiOperation("月数的拼接") 7 public static List<String> getMonths(String startDate,String endDate) throws 8 Exception { 9 SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");10 SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM");11 //date1 转换以(2020-01-11 00:00:00)展示12 Date date1 = simpleDateFormat1.parse(startDate);13 //14 String start=simpleDateFormat.format(date1);15 Date date2 = simpleDateFormat.parse(endDate);16 System.out.println("date1是 " date1 "date2是 " date2);17 //初始时间拼接 date1(2020-01-11 00:00:00),initialTime(2020-01-11 23:59:59)18 List dateList = new ArrayList<String>();19 Calendar initialCalendar = Calendar.getInstance();20 List tlist=new ArrayList<String>();21 initialCalendar.setTime(date1);22 initialCalendar.add(Calendar.MONTH, 1);23 initialCalendar.add(Calendar.DATE, -1);24 Date initialDate = initialCalendar.getTime();25 String initial=simpleDateFormat.format(initialDate);26 tlist.add(start);27 tlist.add(initial);28 dateList.add(tlist);29 //计算时间30 Interval interval = new Interval(date1.getTime(),date2.getTime());31 Period period = interval.toPeriod();32 Integer months=period.getMonths();33 //获取24内的各时间点,可能跨天34 System.out.println("月数是 " months);35 for (int i=0; i<months; i ) {36 List timeList=new ArrayList<String>();37 //给当前时间加一秒38 initialCalendar.add(Calendar.DATE, 1);39 Date d1=initialCalendar.getTime();40 //转成时间转成字符串固定格式41 String str1=simpleDateFormat.format(d1);42 //给当前时间加23时59分59秒43 initialCalendar.add(Calendar.MONTH, 1);44 initialCalendar.add(Calendar.DATE, -1);45 Date d2 = initialCalendar.getTime();46 //注意时间转换问题47 Date replaceTime=d2;48 String str2=simpleDateFormat.format(replaceTime);49 timeList.add(str1);50 timeList.add(str2);51 //System.out.println("添加到数组中的数据: " timeList);52 //为下一个时间段 设置初始值53 initialCalendar.setTime(d2);54 dateList.add(timeList);55 }56 return dateList;57 }
赞 (0)