Java 8 Time API( 二 )

java.sql.Date相同的功能 。
// 當前日期LocalDate today = LocalDate.now();System.out.println("當前日期=" + today);// 通過提供年月日參數創建日期LocalDate nowYear_1024 = LocalDate.of(2022, Month.OCTOBER, 24);System.out.println("參數日期=" + nowYear_1024);// 通過時區獲取當前日期LocalDate todayShanghai = LocalDate.now(ZoneId.of("Asia/Shanghai"));System.out.println("當前日期(CTT)=" + todayShanghai);// 從紀元日(1970-01-01)開始的第多少天LocalDate dateFromBase = LocalDate.ofEpochDay(365);System.out.println("1970-01-01的第365天= " + dateFromBase);// 某年的第多少天LocalDate hundredDay2022 = LocalDate.ofYearDay(2022, 100);System.out.println("2022年的第100天=" + hundredDay2022);運行之后結果如下:
當前日期=2022-10-26特殊日期=2022-10-24當前日期(CTT)=2022-10-261970-01-01的第365天= 1971-01-012022年的第100天=2022-04-102.LocalTimeLocalTime是一個不可變的時間類,它以HH:mm:ss.SSS的默認格式表示時間 。與LocalDate一樣,這個類提供了時區支持,并可以通過傳遞小時、分鐘和秒作為輸入參數來創建實例 。
// 當前時間LocalTime time = LocalTime.now();System.out.println("當前時間=" + time);// 通過提供時分秒參數創建日期LocalTime specificTime = LocalTime.of(12, 20, 25, 40);System.out.println("參數時間=" + specificTime);// 通過時區獲取當前時間LocalTime timeShanghai = LocalTime.now(ZoneId.of("Asia/Shanghai"));System.out.println("當前時間(CTT)=" + timeShanghai);// 從紀元日開始的第多少秒LocalTime specificSecondTime = LocalTime.ofSecondOfDay(100);System.out.println("從紀元日開始的第100秒=" + specificSecondTime);運行之后結果如下:
當前時間=15:39:18.948參數時間=12:20:25.000000040當前時間(CTT)=15:39:18.949從0開始的第100秒=00:01:403.LocalDateTimeLocalDateTime是一個不可變的日期時間類,它以yyyy-MM-ddTHH:mm:ss.SSS的默認格式表示時間日期 。它提供了一個工廠方法,該方法使用LocalDateLocalTime作為參數創建LocalDateTime實例 。
// 當前日期時間LocalDateTime now = LocalDateTime.now();System.out.println("當前日期時間=" + now);// 通過提供LocalDate和LocalTime參數創建日期時間now = LocalDateTime.of(LocalDate.now(), LocalTime.now());System.out.println("當前日期時間=" + now);// 通過提供年月日時分秒參數創建日期時間LocalDateTime specificTime = LocalDateTime.of(2022, Month.OCTOBER, 24, 10, 24, 24);System.out.println("參數日期時間=" + specificTime);// 通過時區獲取當前日期時間LocalDateTime todayKolkata = LocalDateTime.now(ZoneId.of("Asia/Shanghai"));System.out.println("當前日期時間(CTT)=" + todayKolkata);// 從紀元日開始的第多少秒LocalDateTime dateFromBase = LocalDateTime.ofEpochSecond(100, 0, ZoneOffset.UTC);System.out.println("從紀元日開始的第100秒= " + dateFromBase);運行之后結果如下:
當前日期時間=2022-10-26T15:51:59.070當前日期時間=2022-10-26T15:51:59.071參數日期時間=2022-10-24T10:24:24當前日期時間(CTT)=2022-10-26T15:51:59.071從紀元日開始的第100秒=1970-01-01T00:01:40注意:以上例子通過輸入參數創建實例時,如果輸入了無效的參數name將會拋出java.time.DateTimeException
4.Instantinstant類用于處理機器可讀的時間格式 。instant類將日期時間存儲在unix時間戳中 。
// 當期時間戳Instant timestamp = Instant.now();System.out.println("當期時間戳= "+timestamp);// 從紀元日開始的第多少毫秒Instant specificTime = Instant.ofEpochMilli(timestamp.toEpochMilli());System.out.println("從紀元日開始="+specificTime);運行之后結果如下:
當期時間戳=2022-10-26T08:08:40.429Z從紀元日開始=2022-10-26T08:08:40.429ZJava8日期時間API類的實用方法大多數日期時間類都會提供各種實用方法 , 例如加/減天數、周數、月數等 。還有一些其他實用方法可以使用時間調整器TemporalAdjuster調整日期 , 并計算兩個日期之間的時間段 。
LocalDate today = LocalDate.now();//獲取年份,判斷年份是否是閏年System.out.println("Year "+today.getYear()+" is Leap Year? "+today.isLeapYear());//比較兩個時間System.out.println("Today is before 01/01/2023? "+today.isBefore(LocalDate.of(2023,1,1)));//通過LocalDate創建LocalDateTimeSystem.out.println("Current Time="+today.atTime(LocalTime.now()));//加減操作System.out.println("10 days after today will be "+today.plusDays(10));System.out.println("3 weeks after today will be "+today.plusWeeks(3));System.out.println("20 months after today will be "+today.plusMonths(20));System.out.println("10 days before today will be "+today.minusDays(10));System.out.println("3 weeks before today will be "+today.minusWeeks(3));System.out.println("20 months before today will be "+today.minusMonths(20));//時間調整器調整時間System.out.println("First date of this month= "+today.with(TemporalAdjusters.firstDayOfMonth()));LocalDate lastDayOfYear = today.with(TemporalAdjusters.lastDayOfYear());System.out.println("Last date of this year= "+lastDayOfYear);Period period = today.until(lastDayOfYear);System.out.println("Period Format= "+period);System.out.println("Months remaining in the year= "+period.getMonths());

推薦閱讀