Java 8中引入了全新的日期和時間API,即Java.time包。與以前的Java.util包和Java.sql.Date不同,Java.time是為了在可以處理不同時間標準、時間精度和時區中提供更好的支持而創建的。
一、LocalDate和LocalTime類
Java.time包中最基本的類是LocalDate和LocalTime。其中LocalDate表示日期,LocalTime表示時間。
// 現在的日期和時間
LocalDate today = LocalDate.now();
LocalTime currentTime = LocalTime.now();
System.out.println(today); // 2021-04-20
System.out.println(currentTime); // 13:43:25.309202200
如果你想獲取一個特定日期的值,可以使用of()方法。例如,下面展示了如何獲取生日的日期:
LocalDate birthday = LocalDate.of(1990, 5, 26);
你還可以使用get()方法獲取特定日期的部分值,例如獲取年、月、日等。
int year = birthday.getYear();
int month = birthday.getMonthValue();
int day = birthday.getDayOfMonth();
System.out.println(year); // 1990
System.out.println(month); // 5
System.out.println(day); // 26
二、LocalDateTime類
LocalDateTime類是LocalDate和LocalTime的組合體,表示日期和時間。你可以使用now()方法獲取當前日期和時間。
LocalDateTime currentDateTime = LocalDateTime.now();
System.out.println(currentDateTime); // 2021-04-20T14:05:53.172504800
你還可以使用of()方法創建特定的日期和時間。
LocalDateTime dateTime = LocalDateTime.of(2022, Month.JANUARY, 1, 12, 0, 0);
三、ZonedDateTime類
ZonedDateTime類是一個日期時間的完整表示,包括時區信息。你可以使用now()方法獲取當前日期和時間以及時區信息。
ZonedDateTime currentDateTimeWithZone = ZonedDateTime.now();
System.out.println(currentDateTimeWithZone); // 2021-04-20T14:14:31.233656-04:00[America/New_York]
你還可以使用of()方法創建特定的日期和時間以及時區信息。
ZoneId zoneId = ZoneId.of("America/Los_Angeles");
ZonedDateTime dateTimeWithZone = ZonedDateTime.of(2022, 1, 1, 12, 0, 0, 0, zoneId);
System.out.println(dateTimeWithZone); // 2022-01-01T12:00-08:00[America/Los_Angeles]
四、Duration和Period類
Duration和Period類是用於處理時間段的類。Duration用於表示兩個時間之間的時間量,而Period用於表示兩個日期之間的天數、月數或年數差異。
LocalDateTime dateTime1 = LocalDateTime.of(2022, Month.JANUARY, 1, 12, 0, 0);
LocalDateTime dateTime2 = LocalDateTime.of(2022, Month.JANUARY, 1, 12, 30, 0);
Duration duration = Duration.between(dateTime1, dateTime2);
System.out.println(duration); // PT30M
LocalDate date1 = LocalDate.of(1990, 5, 26);
LocalDate date2 = LocalDate.of(2022, 1, 1);
Period period = Period.between(date1, date2);
System.out.println(period); // P31Y7M6D
五、DateTimeFormatter類
DateTimeFormatter類用于格式化和解析日期和時間。它的格式化和解析方法與SimpleDateFormat類似,但有更好的線程安全性。
例如,要將日期格式化為字元串,可以使用如下代碼:
LocalDateTime dateTime = LocalDateTime.of(2022, Month.JANUARY, 1, 12, 0, 0);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String formattedDateTime = dateTime.format(formatter);
System.out.println(formattedDateTime); // 2022-01-01 12:00:00
相反,要將字元串解析為日期,可以使用如下代碼:
String dateTimeString = "2022-01-01 12:00:00";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime parsedDateTime = LocalDateTime.parse(dateTimeString, formatter);
System.out.println(parsedDateTime); // 2022-01-01T12:00
六、總結
本文介紹了Java 8中的Java.time包,包括LocalDate和LocalTime類、LocalDateTime類、ZonedDateTime類、Duration和Period類以及DateTimeFormatter類。通過這些類,Java開發人員可以更好地處理日期和時間,並在時間標準、時間精度和時區之間自如地穿梭。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/150675.html