localdate 時間獲取與轉換,獲取兩個日期中間的所有天數


1 localDate   格式為年月日 yyyy-MM-dd

  1.1 獲取當前時間

 

 

 

      //獲取當前時間
        LocalDate now = LocalDate.now();

   

1.2 string 轉 LocalDate

 

 

 

     //string  轉 localDate
        LocalDate time = LocalDate.parse("2021-10-03");

  

1.3 日期所屬的月份的第一天

 

 

 

 

 LocalDate time = LocalDate.parse("2021-10-03");
        //時間所屬月份的第一天
        LocalDate firstDayOfMonth = time.with(TemporalAdjusters.firstDayOfMonth());

  

1.4 日期所屬月份最后一天

 

 

 

 //時間所屬月份的最后一天
        LocalDate lastDayOfMonth = time.with(TemporalAdjusters.lastDayOfMonth());

  

1.5 時間下個月的第一天

 

 

 

 //時間下個月的第一天
        LocalDate firstDayOfNextMonth = time.with(TemporalAdjusters.firstDayOfNextMonth());

  

1.6 時間下一年的第一天

 

 

 

//時間 下一年的第一天
        LocalDate firstDayOfNextYear = time.with(TemporalAdjusters.firstDayOfNextYear());

 1.7 時間所屬的年份的第一天

 

 

 

 //時間所屬年份的第一天
        LocalDate firstDayOfYear = time.with(TemporalAdjusters.firstDayOfYear());

  1.8 時間所屬年份的最后一天

 

 

 

 //時間所屬年份的第一天
        LocalDate lastDayOfYear = time.with(TemporalAdjusters.lastDayOfYear());

  

1.9 時間所屬月份的周 的日期

 

 

 

 //時間的第一個周末
         LocalDate dayOfWeekInMonth = time.with(TemporalAdjusters.dayOfWeekInMonth(1, DayOfWeek.SUNDAY));
        //時間的第二個周三
        LocalDate dayOfWeekInMonth1 = time.with(TemporalAdjusters.dayOfWeekInMonth(2, DayOfWeek.WEDNESDAY));
        //時間 上個月的最后一周
         LocalDate with = time.with(TemporalAdjusters.dayOfWeekInMonth(0, DayOfWeek.SUNDAY));

  

1.10  時間所屬月份的第一個周幾

 

 

 

//時間所屬月份第一個 周幾 示例:第一個周一日期
         LocalDate firstInMonth = time.with(TemporalAdjusters.firstInMonth(DayOfWeek.WEDNESDAY));

 

1.11  時間所屬月份的最后一個周幾的日期

 

 

 

 

 //時間所屬月份最后一個周幾 日期 示例:最后一個周天日期
        LocalDate lastInMonth = time.with(TemporalAdjusters.lastInMonth(DayOfWeek.SUNDAY));

 

1.12 時間的下一個周幾 

 

 

 

1.13 時間的上一個周幾

 

 

 

 //時間 上一個周幾 日期 示例:該時間的 上一個周日 日期
        LocalDate previousSunday = time.with(TemporalAdjusters.previous(DayOfWeek.SUNDAY));

 

1.14 獲取時間的 月 周  日

 

 

 

 // 獲取時間的具體的 月 周 日
         Month month = time.getMonth();
         DayOfWeek dayOfWeek = time.getDayOfWeek();
        int dayOfMonth = time.getDayOfMonth();

 

1.15 時間的 年月日 加減

 

 

 

 /**
         * 時間 年月日的 加減
         */
        //
        LocalDate minusDays = time.minusDays(3);
        LocalDate localDate1 = time.minusWeeks(1);
        LocalDate minusMonths = time.minusMonths(2);
        LocalDate minusYears = time.minusYears(1);
        //
        LocalDate localDate = time.plusDays(7);
        LocalDate plusWeeks = time.plusWeeks(1);
        LocalDate months = time.plusMonths(1);
        LocalDate plusYears = time.plusYears(5);

 

 

1.16  時間的比較  之前-之后-相等-天數差

 

 

 /**
         * 時間 的 比較
         */
        LocalDate three = LocalDate.parse("2021-10-03");
        LocalDate four = LocalDate.parse("2021-10-23");
        //天數差  
        int i = three.compareTo(four);
        //是否之后
        boolean after = three.isAfter(four);
        //是否之前
        boolean before = three.isBefore(four);
        //是否相等
        boolean equals = three.equals(four);
        //時間的月份 比較
         boolean equalsMonth = three.getMonth().equals(four.getMonth());

 

1.17 時間轉換格式

 

 

  /**
         * 時間轉換格式
         */

        //  LocalDate 轉 string
        String s = three.toString();
        // LocalDate 轉 date
        Date date = Date.from(three.atStartOfDay(ZoneOffset.ofHours(8)).toInstant());
        //LocalDate 轉 localDateTime
        //獲取時分秒
        LocalTime localTime = LocalTime.now();
        //LocalDateTime= 年月日+時分秒
        LocalDateTime localDateTime = LocalDateTime.of(three,localTime);

 

 

測試用例:

    @Test
    public void timeTest() {
        //獲取當前時間
        LocalDate now = LocalDate.now();
        //string  轉 localDate
        LocalDate time = LocalDate.parse("2021-10-03");
        //時間所屬月份的第一天
        LocalDate firstDayOfMonth = time.with(TemporalAdjusters.firstDayOfMonth());
        //時間所屬月份的最后一天
        LocalDate lastDayOfMonth = time.with(TemporalAdjusters.lastDayOfMonth());
        //時間下個月的第一天
        LocalDate firstDayOfNextMonth = time.with(TemporalAdjusters.firstDayOfNextMonth());
        //時間 下一年的第一天
        LocalDate firstDayOfNextYear = time.with(TemporalAdjusters.firstDayOfNextYear());
        //時間所屬年份的第一天
        LocalDate firstDayOfYear = time.with(TemporalAdjusters.firstDayOfYear());
        //時間所屬年份的第一天
        LocalDate lastDayOfYear = time.with(TemporalAdjusters.lastDayOfYear());
        //時間的第一個周末
        LocalDate dayOfWeekInMonth = time.with(TemporalAdjusters.dayOfWeekInMonth(1, DayOfWeek.SUNDAY));
        //時間的第二個周三
        LocalDate dayOfWeekInMonth1 = time.with(TemporalAdjusters.dayOfWeekInMonth(2, DayOfWeek.WEDNESDAY));
        //時間 上個月的最后一周
        LocalDate with = time.with(TemporalAdjusters.dayOfWeekInMonth(0, DayOfWeek.SUNDAY));
        //時間所屬月份第一個 周幾 示例:第一個周一日期
        LocalDate firstInMonth = time.with(TemporalAdjusters.firstInMonth(DayOfWeek.WEDNESDAY));
        //時間所屬月份最后一個周幾 日期 示例:最后一個周天日期
        LocalDate lastInMonth = time.with(TemporalAdjusters.lastInMonth(DayOfWeek.SUNDAY));
        //時間下一個周幾 日期 示例:該時間的下一個周日 日期
        LocalDate nextSunday = time.with(TemporalAdjusters.next(DayOfWeek.SUNDAY));
        //時間 上一個周幾 日期 示例:該時間的 上一個周日 日期
        LocalDate previousSunday = time.with(TemporalAdjusters.previous(DayOfWeek.SUNDAY));
        // 獲取時間的具體的 月 周 日
        Month month = time.getMonth();
        DayOfWeek dayOfWeek = time.getDayOfWeek();
        int dayOfMonth = time.getDayOfMonth();

        /**
         * 時間 年月日的 加減
         */
        //
        LocalDate minusDays = time.minusDays(3);
        LocalDate localDate1 = time.minusWeeks(1);
        LocalDate minusMonths = time.minusMonths(2);
        LocalDate minusYears = time.minusYears(1);
        //
        LocalDate localDate = time.plusDays(7);
        LocalDate plusWeeks = time.plusWeeks(1);
        LocalDate months = time.plusMonths(1);
        LocalDate plusYears = time.plusYears(5);

        /**
         * 時間 的 比較
         */
        LocalDate three = LocalDate.parse("2021-10-03");
        LocalDate four = LocalDate.parse("2021-10-23");
        //天數差
        int i = three.compareTo(four);
        //是否之后
        boolean after = three.isAfter(four);
        //是否之前
        boolean before = three.isBefore(four);
        //是否相等
        boolean equals = three.equals(four);
        //時間的月份 比較
        boolean equalsMonth = three.getMonth().equals(four.getMonth());


        /**
         * 時間轉換格式
         */

        //  LocalDate 轉 string
        String s = three.toString();
        // LocalDate 轉 date
        Date date = Date.from(three.atStartOfDay(ZoneOffset.ofHours(8)).toInstant());
        //LocalDate 轉 localDateTime
        //獲取時分秒
        LocalTime localTime = LocalTime.now();
        //LocalDateTime= 年月日+時分秒
        LocalDateTime localDateTime = LocalDateTime.of(three,localTime);

    }

 

更新:2022-06-22

  獲取兩個日期中間的所有天數,所有月份

 

 

 /**
     * 獲取一段時間的每一天日期或者月份
     * 開始時間要小於結束時間  時間格式  日 2022-06-12   月 2022-06
     * @param start
     * @param end
     * @return
     * @throws Exception
     */

    public static List<String> getBetweenDate(String start, String end, Integer type) {
        List<String> list = new ArrayList<>();
        if(start.length()<8){
            start+="-01";
            end+="-01";
        }
        LocalDate startDate = LocalDate.parse(start);
        LocalDate endDate = LocalDate.parse(end);
        long distance = 0L;
        if (type == 1) {
            distance = ChronoUnit.DAYS.between(startDate, endDate);
            Stream.iterate(startDate, d -> d.plusDays(1)).limit(distance + 1).forEach(f -> list.add(f.toString()));
        } else if(type==2) {
            distance = ChronoUnit.MONTHS.between(startDate, endDate);
            Stream.iterate(startDate, d -> d.plusMonths(1)).limit(distance + 1).forEach(f -> list.add(f.toString().substring(0,7)));
        }
        return list;
    }





@Test
void test(){
LocalDate localDate = LocalDate.now();
LocalDate l = LocalDate.parse("2022-01-01");

List<String> day = getBetweenDate(l.toString(), localDate.toString(),1);
System.out.println("day = " + day);


List<String> month = getBetweenDate(l.toString(), localDate.toString(),2);
System.out.println("month = " + month);
}


 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM