zoukankan      html  css  js  c++  java
  • Java日期时间API系列23-----Jdk8中java.time包中的新的日期时间API类,获取准确开始时间00:00:00,获取准确结束时间23:59:59等

      有时候,往往需要统计某个时间区间的销量等问题,这就需要准确的起始时间,获取准确开始时间00:00:00,获取准确结束时间23:59:59。下面增加了一一些方法,获取当天起始时间,昨天起始时间,当前月第一天开始时间,当前月最后一天结束时间,上个月第一天开始时间,上个月最后一天结束时间,某个指定月的起始结束时间等等。其中月份最后一天往往因为月份不同和闰年而不同。

    1  下面是方法:

        /**
         * 一天开始时间 00:00:00
         * @return
         */
        public static LocalTime startTimeOfDay(){
            return LocalTime.of(0, 0, 0);
        }
        
        /**
         * 一天开始时间 23:59:59
         * @return
         */
        public static LocalTime endTimeOfDay(){
            return LocalTime.of(23, 59, 59);
        }
        
        /**
         * 昨天起始时间 即:昨天日期+00:00:00
         * @return
         */
        public static Date startTimeOfYesterday(){
            return DateTimeConverterUtil.toDate(LocalDate.now().minusDays(1).atTime(startTimeOfDay()));
        }
        
        /**
         * 昨天结束时间即:昨天日期+23:59:59
         * @return
         */
        public static Date endTimeOfYesterday(){
            return DateTimeConverterUtil.toDate(LocalDate.now().minusDays(1).atTime(endTimeOfDay()));
        }
        
        /**
         * 今天起始时间 即:今天日期+00:00:00
         * @return
         */
        public static Date startTimeOfToday(){
            return DateTimeConverterUtil.toDate(LocalDate.now().atTime(startTimeOfDay()));
        }
        
        /**
         * 今天结束时间即:今天日期+23:59:59
         * @return
         */
        public static Date endTimeOfToday(){
            return DateTimeConverterUtil.toDate(LocalDate.now().atTime(endTimeOfDay()));
        }
        
        /**
         * 上个月第一天起始时间 即:上个月第一天日期+00:00:00
         * @return
         */
        public static Date startTimeOfLastMonth(){
            return DateTimeConverterUtil.toDate(firstDayOfMonth(LocalDate.now().minusMonths(1)).atTime(startTimeOfDay()));
        }
        
        /**
         * 上个月最后一天结束时间 即:上个月最后一天日期+23:59:59
         * @return
         */
        public static Date endTimeOfLastMonth(){
            return DateTimeConverterUtil.toDate(lastDayOfMonth(LocalDate.now().minusMonths(1)).atTime(endTimeOfDay()));
        }
        
        /**
         * 当月第一天起始时间 即:当月第一天日期+00:00:00
         * @return
         */
        public static Date startTimeOfMonth(){
            return DateTimeConverterUtil.toDate(firstDayOfMonth(LocalDate.now()).atTime(startTimeOfDay()));
        }
        
        /**
         * 当月最后一天结束时间即:当月最后一天日期+23:59:59
         * @return
         */
        public static Date endTimeOfMonth(){
            return DateTimeConverterUtil.toDate(lastDayOfMonth(LocalDate.now()).atTime(endTimeOfDay()));
        }
        
        /**
         * 获date起始时间
         * @param date
         * @return
         */
        public static Date startTimeOfDate(Date date){
            return DateTimeConverterUtil.toDate(DateTimeConverterUtil.toLocalDate(date).atTime(startTimeOfDay()));
        }
        
        /**
         * 获取date结束时间
         * @param date
         * @return
         */
        public static Date endTimeOfDate(Date date){
            return DateTimeConverterUtil.toDate(DateTimeConverterUtil.toLocalDate(date).atTime(endTimeOfDay()));
        }
    
        /**
         * 获取指定年月的第一天起始时间
         * @param year
         * @param month
         * @return
         */
        public static Date startTimeOfSpecialMonth(int year, int month){
            return DateTimeConverterUtil.toDate(LocalDate.of(year, month, 1).atTime(startTimeOfDay()));
        }
        
        /**
         * 获取指定年月的最后一天结束时间
         * @param year
         * @param month
         * @return
         */
        public static Date endTimeOfSpecialMonth(int year, int month){
            return DateTimeConverterUtil.toDate(lastDayOfMonth(LocalDate.of(year, month, 1)).atTime(endTimeOfDay()));
        }

    2. 测试代码:

        /**
         * 获取准确的起始时间方法测试
         * 比如startTimeOfMonth() 当月起始时间 当月第一天日期+00:00:00
         *       endTimeOfMonth() 当月最后一天日期+23:59:59
         */
        @Test
        public void dateStartTimeAndEndTimeTest(){
            //当天
            System.out.println(DateTimeFormatterUtil.formatToDateTimeStr(DateTimeCalculatorUtil.startTimeOfToday()));
            System.out.println(DateTimeFormatterUtil.formatToDateTimeStr(DateTimeCalculatorUtil.endTimeOfToday()));
            
            //当月
            System.out.println(DateTimeFormatterUtil.formatToDateTimeStr(DateTimeCalculatorUtil.startTimeOfMonth()));
            System.out.println(DateTimeFormatterUtil.formatToDateTimeStr(DateTimeCalculatorUtil.endTimeOfMonth()));
            
            //指定年月
            System.out.println(DateTimeFormatterUtil.formatToDateTimeStr(DateTimeCalculatorUtil.startTimeOfSpecialMonth(2019, 10)));
            System.out.println(DateTimeFormatterUtil.formatToDateTimeStr(DateTimeCalculatorUtil.endTimeOfSpecialMonth(2019, 10)));
        }

    3. 输出:

    2020-02-27 00:00:00
    2020-02-27 23:59:59
    2020-02-01 00:00:00
    2020-02-29 23:59:59
    2019-10-01 00:00:00
    2019-10-31 23:59:59

    源代码地址:https://github.com/xkzhangsan/xk-time

  • 相关阅读:
    Linux Select之坑
    BitCoin p2p通信过程
    2018软工实践——团队答辩
    Ubuntu16安装GTK+2.0教程
    福大软工1816 · 第五次作业
    福大软工1816 · 第五次作业
    福大软工1816 · 第五次作业
    福大软工1816 · 第五次作业
    Notepad++一键编译运行(Python、Java、C++)
    福大软工1816 · 第四次作业
  • 原文地址:https://www.cnblogs.com/xkzhangsanx/p/12372768.html
Copyright © 2011-2022 走看看