有時候,往往需要統計某個時間區間的銷量等問題,這就需要準確的起始時間,獲取準確開始時間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