俩个日期计算小时,天数,月份,还有时间组合

以下方法就可以直接调用

/**     * 计算月数     * @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     }

来源:https://www.icode9.com/content-4-773651.html

(0)

相关推荐