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


     以下方法就可以直接调用

        /**
         * 计算月数
         * @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         //天数为1
    24         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     }
  • 相关阅读:
    Java 集合系列16之 HashSet详细介绍(源码解析)和使用示例
    Java 集合系列15之 Set架构
    Java 集合系列14之 Map总结(HashMap, Hashtable, TreeMap, WeakHashMap等使用场景)
    Java 集合系列13之 WeakHashMap详细介绍(源码解析)和使用示例
    Java 集合系列13之 TreeMap详细介绍(源码解析)和使用示例
    Java 集合系列12之 Hashtable详细介绍(源码解析)和使用示例
    Java 集合系列11之 HashMap详细介绍(二)
    Java 集合系列10之 HashMap详细介绍(源码解析)和使用示例
    Maven01-maven打包Web项目成war文件-tomcat脱机运行启动项目
    Spring -13 -Spring 中常用注解总结
  • 原文地址:https://www.cnblogs.com/linyu1/p/14079239.html
Copyright © 2020-2023  润新知