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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章