一、LocalDate比較日期大小
LocalDate 是不含時分秒的日期時間格式,它包含年月日等基本信息。我們可以使用 compareTo() 方法進行日期的比較大小。如果 this 比參數 date 小,則返回負數;如果 this 比參數 date 大,則返回正數;如果相等,則返回0。
LocalDate date1 = LocalDate.of(2022, 3, 20);
LocalDate date2 = LocalDate.of(2022, 3, 21);
int compareTo = date1.compareTo(date2);
System.out.println(compareTo); //-1
此時我們可以得出,date1 小於 date2,返回結果為 -1。
二、LocalDate和LocalDateTime
LocalDateTime 是包含時分秒的日期時間格式,它除了擁有 LocalDate 的基本信息之外,還包含有時分秒的信息。同樣地,我們可以使用 compareTo() 方法進行日期時間的比較大小。
LocalDate localDate = LocalDate.of(2022, 3, 20);
LocalDateTime localDateTime = LocalDateTime.of(localDate, LocalTime.of(15, 30, 20));
LocalDateTime localDateTime2 = LocalDateTime.of(localDate, LocalTime.of(18, 30, 40));
int compareTo = localDateTime.compareTo(localDateTime2);
System.out.println(compareTo); //-1
此時我們可以得出,localDateTime 小於 localDateTime2,返回結果為 -1。
三、LocalDateTime計算時間差
LocalDateTime 支持各種加減運算,通過 plus(…) 和 minus(…) 可以對 LocalDateTime 進行時間計算。我們常用的還有 between(…) 方法,如下所示:
LocalDateTime localDateTime = LocalDateTime.of(2022, 3, 20, 19, 30, 0);
LocalDateTime localDateTime2 = LocalDateTime.of(2022, 3, 20, 22, 30, 0);
Duration between = Duration.between(localDateTime, localDateTime2);
System.out.println(between.getSeconds()); //10800
此時我們可以得出 localDateTime 與 localDateTime2 的時間差為 3 小時。
四、LocalDateTime怎麼比較大小
與LocalDate和LocalTime不同,LocalDateTime 類型的比較,需要先調用 isBefore() 或 isAfter() 方法,再判斷compareTo() 方法的返回值。如下所示:
LocalDateTime localDateTime = LocalDateTime.of(2022, 3, 20, 19, 30, 0);
LocalDateTime localDateTime2 = LocalDateTime.of(2022, 3, 20, 22, 30, 0);
boolean isBefore = localDateTime.isBefore(localDateTime2);
boolean isAfter = localDateTime.isAfter(localDateTime2);
int compareTo = localDateTime.compareTo(localDateTime2);
System.out.println(isBefore); //true
System.out.println(isAfter); //false
System.out.println(compareTo); //-1
通過此例我們可以得出,localDateTime 小於 localDateTime2,返回結果為 -1。
五、Date和LocalDateTime的區別
Date 是 Java 8 以前版本中用於表示日期時間的類型,不容易進行日期時間格式的操作,而 LocalDate、LocalDateTime 類型則是 Java 8 以後新增的類。Date 對象是可變且線程不安全的,而 LocalDateTime 類型是不可變且線程安全的。
下面我們通過代碼展示 LocalDateTime 與 Date 類型的比較:
Date date1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2022-03-20 23:30:00");
LocalDateTime localDateTime = LocalDateTime.of(2022, 3, 20, 23, 30, 0);
Instant instant = localDateTime.atZone(ZoneId.systemDefault()).toInstant();
Date date2 = Date.from(instant);
System.out.println(date1.compareTo(date2)); //0
通過此例我們可以看出,Date 對象與 LocalDateTime 類型經過轉換後,可以進行日期時間的比較。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/242296.html