Java DateTime是Java提供的處理日期、時間和時間間隔的API。Java 8引入了一個新的日期時間API,即java.time包,提供了許多新功能。在以前的java.util和java.sql包中處理日期和時間存在許多問題,而此API提供了一種可靠,易於使用和更豐富的方式來處理日期和時間。
一、LocalDate和LocalTime
該API中的LocalDate是一個表示日期(年,月,日)的類。它不包含時間或時區。可以使用靜態方法of生成LocalDate類型的對象。例如,以下代碼通過of方法生成一個具有指定日期的對象:
LocalDate date = LocalDate.of(2022, 2, 3);
而LocalTime是一個表示時間(小時,分鐘和秒)的類。它也不包含日期和時區。類似地,可以使用靜態方法of生成LocalTime類型的對象。例如,以下代碼通過of方法生成一個具有指定時間的對象:
LocalTime time = LocalTime.of(9, 30, 0);
我們還可以使用解析器來將表示日期或時間的字元串轉換為LocalDate或LocalTime類型對象。例如:
LocalDate date = LocalDate.parse("2022-02-03"); LocalTime time = LocalTime.parse("09:30:00");
二、LocalDateTime
LocalDateTime是一個日期時間的組合類,它擁有LocalDate和LocalTime的所有屬性。可以使用of方法創建LocalDateTime對象,也可以將LocalDate和LocalTime組合而成。例如:
LocalDate date = LocalDate.of(2022, 2, 3); LocalTime time = LocalTime.of(9, 30, 0); LocalDateTime datetime = LocalDateTime.of(date, time);
此外,我們也可以使用解析器將符合ISO 8601格式的字元串轉換為LocalDateTime類型對象。例如:
LocalDateTime datetime = LocalDateTime.parse("2022-02-03T09:30:00");
三、ZonedDateTime
ZonedDateTime類表示具有時區的日期和時間。可以使用Clock類獲取指定時區的當前日期和時間,並使用指定的時區創建ZonedDateTime對象。例如:
ZoneId zoneId = ZoneId.of("America/Los_Angeles"); Clock clock = Clock.system(zoneId); ZonedDateTime datetime = ZonedDateTime.now(clock);
此外,我們也可以將LocalDateTime對象轉換為ZonedDateTime類型對象。例如:
LocalDateTime datetime = LocalDateTime.of(2022, 2, 3, 9, 30, 0); ZoneId zoneId = ZoneId.of("America/Los_Angeles"); ZonedDateTime zonedDateTime = ZonedDateTime.of(datetime, zoneId);
四、Duration和Period
Duration和Period類分別用於表示時間間隔和日期間隔。Duration表示兩個日期時間之間的時間長度。例如,以下代碼計算兩個LocalDateTime對象之間的時間間隔:
LocalDateTime start = LocalDateTime.of(2022, 2, 3, 9, 0, 0); LocalDateTime end = LocalDateTime.of(2022, 2, 3, 9, 30, 0); Duration duration = Duration.between(start, end); System.out.println(duration.getSeconds() + " seconds");
而Period表示兩個日期之間的時間長度。例如,以下代碼計算兩個LocalDate對象之間的時間間隔:
LocalDate start = LocalDate.of(2022, 2, 3); LocalDate end = LocalDate.of(2022, 3, 3); Period period = Period.between(start, end); System.out.println(period.getMonths() + " months");
五、DateTimeFormatter
DateTimeFormatter類用於將日期時間對象格式化為字元串,也可以將字元串解析為日期時間對象。Java提供了一些內置的格式化程序,例如,FormatStyle,可以使用它們來格式化日期時間。例如,以下代碼將LocalDateTime對象格式化為指定格式的字元串:
LocalDateTime datetime = LocalDateTime.of(2022, 2, 3, 9, 30, 0); DateTimeFormatter formatter = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM); String formattedDateTime = formatter.format(datetime); System.out.println(formattedDateTime);
此外,我們也可以自定義格式化程序來格式化日期時間。例如:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); LocalDateTime datetime = LocalDateTime.of(2022, 2, 3, 9, 30, 0); String formattedDateTime = datetime.format(formatter); System.out.println(formattedDateTime);
六、總結
Java DateTime API提供了一種可靠,易於使用和更豐富的方式來處理日期和時間。本文介紹了該API的一些主要特性和示例代碼,包括LocalDate和LocalTime、LocalDateTime、ZonedDateTime、Duration和Period、DateTimeFormatter等。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/193444.html