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

以下方法都可以直接调用,不用担心

方法1

/**

    * period计算月数

    * @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;

    }

方法2

    /**

    * period计算天数

    * @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;

    }

方法3

    /**

    * period计算小时

    * @param startDate 开始时间

    * @param endDate 结束时间

    */

    @ApiOperation("小数获取")

    public static long hoursBetween(Date  startDate, Date  endDate) {

        long betweenDate = (endDate.getTime() - startDate.getTime())/(60*60*1000);

        return betweenDate;

    }

方法4

以下方法可直接调用,显示的数据格式

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

/**

    * 小时的拼接

    * @param startDate 开始时间

    * @param endDate 结束时间

    */

    @ApiOperation("小时的拼接")

    public static List getTodayHours(String startDate,String endDate) throws

    Exception {

        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

        SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd HH");

        //date1 转换以(2020-01-11 10:00:00)展示

        Date date1 = simpleDateFormat1.parse(startDate);

        String start=simpleDateFormat.format(date1);

        Date date2 = simpleDateFormat.parse(endDate);

        //初始时间拼接 date1(2020-01-11 10:00:00),initialTime(2020-01-11 10:59:59)

        List dateList = new ArrayList();

        Calendar initialCalendar = Calendar.getInstance();

        List tlist=new ArrayList();

        initialCalendar.setTime(date1);

        initialCalendar.add(Calendar.MINUTE, 59);

        initialCalendar.add(Calendar.SECOND, 59);

        Date initialDate = initialCalendar.getTime();

        String initial=simpleDateFormat.format(initialDate);

        tlist.add(start);

        tlist.add(initial);

        dateList.add(tlist);

        //计算时间

        Interval interval = new Interval(date1.getTime(),date2.getTime());

        Period period = interval.toPeriod();

        Integer hour=period.getHours();

        //获取24内的各时间点,可能跨天

        for (int i=0; i

            List timeList=new ArrayList();

            //给当前时间加一秒

            initialCalendar.add(Calendar.SECOND, 1);

            Date d1=initialCalendar.getTime();

            //转成时间转成字符串固定格式

            String str1=simpleDateFormat.format(d1);

            //给当前时间加59分59秒

            initialCalendar.add(Calendar.MINUTE, 59);

            initialCalendar.add(Calendar.SECOND, 59);

            Date d2 = initialCalendar.getTime();

            //注意时间转换问题

            Date replaceTime=d2;

            String str2=simpleDateFormat.format(replaceTime);

            timeList.add(str1);

            timeList.add(str2);

            //System.out.println("添加到数组中的数据:  "+timeList);

            //为下一个时间段 设置初始值

            initialCalendar.setTime(d2);

            dateList.add(timeList);

        }

        return dateList;

    }

方法5

以下方法可直接调用,显示的数据格式

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

/**

    * 天数的拼接

    * @param startDate 开始时间

    * @param endDate 结束时间

    */

    @ApiOperation("天数的拼接")

    public static List getTodays(String startDate,String endDate) throws

    Exception {

        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

        SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd");

        //date1 转换以(2020-01-11 00:00:00)展示

        Date date1 = simpleDateFormat1.parse(startDate);

        String start=simpleDateFormat.format(date1);

        Date date2 = simpleDateFormat.parse(endDate);

        //startDate1为准确计算天数

        Date startDate1 = simpleDateFormat.parse(startDate);

        long today=daysBetween(startDate1,date2);

        //初始时间拼接 date1(2020-01-11 00:00:00),initialTime(2020-01-11 23:59:59)

        List dateList = new ArrayList();

        Calendar initialCalendar = Calendar.getInstance();

        //天数为1

        List tlist = new ArrayList();

        initialCalendar.setTime(date1);

        initialCalendar.add(Calendar.HOUR, 23);

        initialCalendar.add(Calendar.MINUTE, 59);

        initialCalendar.add(Calendar.SECOND, 59);

        Date initialDate = initialCalendar.getTime();

        String initial = simpleDateFormat.format(initialDate);

        tlist.add(start);

        tlist.add(initial);

        dateList.add(tlist);

        //获取24内的各时间点,可能跨天

        System.out.println("天数是 " + today);

        for (int i = 0; i < today; i++) {

            List timeList = new ArrayList();

            //给当前时间加一秒

            initialCalendar.add(Calendar.SECOND, 1);

            Date d1 = initialCalendar.getTime();

            //转成时间转成字符串固定格式

            String str1 = simpleDateFormat.format(d1);

            //给当前时间加23时59分59秒

            initialCalendar.add(Calendar.HOUR, 23);

            initialCalendar.add(Calendar.MINUTE, 59);

            initialCalendar.add(Calendar.SECOND, 59);

            Date d2 = initialCalendar.getTime();

            //注意时间转换问题

            Date replaceTime = d2;

            String str2 = simpleDateFormat.format(replaceTime);

            timeList.add(str1);

            timeList.add(str2);

            //System.out.println("添加到数组中的数据:  "+timeList);

            //为下一个时间段 设置初始值

            initialCalendar.setTime(d2);

            dateList.add(timeList);

        }

        return dateList;

    }

方法6

以下方法可直接调用,显示的数据格式

2020-1-01       2020-1-31

2020-2-01       2020-2-29 

2020-3-01        2020-3-31 

/**

    * 月数的拼接

    * @param startDate 开始时间

    * @param endDate 结束时间

    */

    @ApiOperation("月数的拼接")

    public static List getMonths(String startDate,String endDate) throws

    Exception {

        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");

        SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM");

        //date1 转换以(2020-01-11 00:00:00)展示

        Date date1 = simpleDateFormat1.parse(startDate);

        //

        String start=simpleDateFormat.format(date1);

        Date date2 = simpleDateFormat.parse(endDate);

        System.out.println("date1是 "+date1+"date2是 "+date2);

        //初始时间拼接 date1(2020-01-11 00:00:00),initialTime(2020-01-11 23:59:59)

        List dateList = new ArrayList();

        Calendar initialCalendar = Calendar.getInstance();

        List tlist=new ArrayList();

        initialCalendar.setTime(date1);

        initialCalendar.add(Calendar.MONTH, 1);

        initialCalendar.add(Calendar.DATE, -1);

        Date initialDate = initialCalendar.getTime();

        String initial=simpleDateFormat.format(initialDate);

        tlist.add(start);

        tlist.add(initial);

        dateList.add(tlist);

        //计算时间

        Interval interval = new Interval(date1.getTime(),date2.getTime());

        Period period = interval.toPeriod();

        Integer months=period.getMonths();

        //获取24内的各时间点,可能跨天

        System.out.println("月数是 "+months);

        for (int i=0; i

            List timeList=new ArrayList();

            //给当前时间加一秒

            initialCalendar.add(Calendar.DATE, 1);

            Date d1=initialCalendar.getTime();

            //转成时间转成字符串固定格式

            String str1=simpleDateFormat.format(d1);

            //给当前时间加23时59分59秒

            initialCalendar.add(Calendar.MONTH, 1);

            initialCalendar.add(Calendar.DATE, -1);

            Date d2 = initialCalendar.getTime();

            //注意时间转换问题

            Date replaceTime=d2;

            String str2=simpleDateFormat.format(replaceTime);

            timeList.add(str1);

            timeList.add(str2);

            //System.out.println("添加到数组中的数据:  "+timeList);

            //为下一个时间段 设置初始值

            initialCalendar.setTime(d2);

            dateList.add(timeList);

        }

        return dateList;

    }

你可能感兴趣的:(俩个日期计算小时,天数,月份,还有时间组合)