java8時間API

創建

        LocalDate localDate = LocalDate.now();                                          // 2018-11-22
        LocalTime localTime = LocalTime.of(2, 20, 30);               // 02:20:30
        LocalDateTime localDateTime = LocalDateTime.of(localDate, localTime);           // 2018-11-22T02:20:30
        LocalDateTime localDateTime1 = localDate.atStartOfDay();                        // 2018-11-22T00:00
        LocalDateTime localDateTime2 = localDate.atTime(20, 12, 59); // 2018-11-22T20:12:59
        LocalDateTime localDateTime3 = localTime.atDate(localDate);                     // 2018-11-22T02:20:30

        LocalDateTime dateTime = LocalDateTime.parse("2020-10-10 02:30:05",
                DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
        System.out.println(dateTime);                   // 2020-10-10T02:30:05
        System.out.println(dateTime.toLocalDate());     // 2020-10-10
        System.out.println(dateTime.toLocalTime());     // 02:30:05

獲取

        LocalDateTime date = LocalDateTime.now();   // 2018-11-22T18:27:46.349
        int year = date.getYear();                  // 2018
        int monthValue = date.getMonthValue();      // 11
        Month month = date.getMonth();              // NOVEMBER
        int dayOfMonth = date.getDayOfMonth();      // 22
        int hour = date.getHour();                  // 18
        int minute = date.getMinute();              // 27
        int second = date.getSecond();              // 46
        int nano = date.getNano();                  // 349000000
        int dayOfYear = date.getDayOfYear();        // 326
        DayOfWeek dayOfWeek = date.getDayOfWeek();  // THURSDAY
        LocalDate localDate = date.toLocalDate();   // 2018-11-22
        int lengthOfYear = localDate.lengthOfYear();// 365
        int lengthOfMonth = localDate.lengthOfMonth();// 30
        boolean leapYear = localDate.isLeapYear();  // false

        int i = localDate.get(ChronoField.DAY_OF_MONTH); // 22
        int i1 = date.get(ChronoField.HOUR_OF_DAY);      // 18

修改

        // 8012-11-15T22:40
        LocalDateTime time = LocalDateTime.of(8012, Month.NOVEMBER, 15, 22, 40);
        LocalDateTime time1 = time.withYear(2018)
                .withMonth(Month.OCTOBER.getValue())
                .withDayOfMonth(1)
                .withHour(5)
                .withMinute(0)
                .withSecond(5);             // 2018-10-01T05:00:05

        LocalDateTime time2 = time1.plusYears(10)
                .minusMonths(1)
                .plusDays(1)
                .minusHours(1)
                .plusMinutes(1)
                .minusSeconds(1);           // 2028-09-02T04:01:04

        LocalDate localDate = LocalDate.of(2018, 11, 2);            // 2018-11-02
        LocalDate date = localDate.with(TemporalAdjusters.firstDayOfMonth());               // 2018-11-01 本月第一天
        LocalDate date1 = localDate.with(TemporalAdjusters.firstDayOfNextMonth());          // 2018-12-01 下月第一天
        LocalDate date2 = localDate.with(TemporalAdjusters.firstDayOfNextYear());           // 2019-01-01 下年第一天
        LocalDate date3 = localDate.with(TemporalAdjusters.lastDayOfMonth());               // 2018-11-30 本月最後天
        LocalDate date4 = localDate.with(TemporalAdjusters.lastInMonth(DayOfWeek.SUNDAY));  // 2018-11-25 當月最後週日
        LocalDate date5 = localDate.with(TemporalAdjusters.dayOfWeekInMonth(1,DayOfWeek.SATURDAY)); // 2018-11-03 當月第一週六
        LocalDate date6 = localDate.with(TemporalAdjusters.next(DayOfWeek.SUNDAY));         // 2018-11-04 下個週日

格式化輸出

        LocalDateTime time = LocalDateTime.of(2018, 12, 1, 10, 20, 30);
        String s1 = time.format(DateTimeFormatter.ISO_DATE_TIME);                       // 2018-12-01T10:20:30
        String s2 = time.format(DateTimeFormatter.BASIC_ISO_DATE);                      // 20181201
        String s3 = time.format(DateTimeFormatter.ofPattern("yyyy MM dd -- HH:mm:ssS"));// 2018 12 01 -- 10:20:300

        DateTimeFormatter myFormatter = new DateTimeFormatterBuilder()
                .appendText(ChronoField.YEAR)
                .appendLiteral("年")
                .appendText(ChronoField.MONTH_OF_YEAR)
                .appendText(ChronoField.DAY_OF_MONTH)
                .appendLiteral("日 第")
                .appendText(ChronoField.DAY_OF_YEAR)
                .appendLiteral("天|")
                .appendText(ChronoField.DAY_OF_WEEK)
                .appendLiteral(" ")
                .parseCaseInsensitive()
                .toFormatter(Locale.CHINA);

        String s4 = time.format(myFormatter);       // 2018年十二月1日 第335天|星期六

時區

        LocalDateTime time = LocalDateTime.now();
        ZonedDateTime shanghai = time.atZone(ZoneId.of("Asia/Shanghai"));
        ZonedDateTime Anchorage = time.atZone(ZoneId.of("America/Anchorage"));
        System.out.println(shanghai);       // 2018-11-22T20:36:47.733+08:00[Asia/Shanghai]
        System.out.println(Anchorage);      // 2018-11-22T20:36:47.733-09:00[America/Anchorage]

        ZoneOffset offset = ZoneOffset.of("-01:00");
        OffsetDateTime offsetDateTime = OffsetDateTime.of(time, offset);
        System.out.println(offsetDateTime); // 2018-11-22T20:36:47.733-01:00
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章