Compare LocalDateTimes in Java - Java 147

Compare LocalDateTimes in Java – Java 147

Compare LocalDateTimes in Java

比較日期時間與另一個日期時間,檢查前後或相等的日期時間,使用 compareTo 、 isBefore 、 isAfter 、 isEqual 等方法, Java Compare LocalDateTimes 屬於 java.time 套件,日期和時間相關的 API ,本篇增加了範例,並透過單元測試來驗證產出結果。

檔案目錄

./
   +- src
       +- test
       |   +- org
       |       +- ruoxue
       |           +- java_147
       |               +- datetime
       |                   +- localdatetime
       |                       +- CompareLocalDateTimesTest.java   

單元測試

Compare LocalDateTime Instances 提供比較兩個 LocalDateTime 物件的方法。

compareTo

Compare LocalDateTime Instances 建立兩個 LocalDateTime ,比較日期時間物件,根據比較結果傳回一個整數值,不考慮時區或日曆資訊。

指定的日期時間早於另一個日期時間,則為負整數,如: a 小於 b 傳回 -1 。
指定的日期時間等於另一個日期時間,則為零,如: a 等於 b 傳回 0 。
指定的日期時間晚於另一個日期時間,則為正整數,如: a 大於 b 傳回 1 。

	@Test
	public void compareTo() {
		LocalDateTime localDateTime = LocalDateTime.of(2023, 8, 3, 1, 2, 3, 123456789);
		LocalDateTime localDateTime2 = LocalDateTime.of(2024, 8, 3, 1, 2, 3, 123456789);
		int result = localDateTime.compareTo(localDateTime2);
		System.out.println(result);
		assertThat(result).isLessThan(0);

		localDateTime = LocalDateTime.of(2023, 8, 3, 1, 2, 3, 123456789);
		localDateTime2 = LocalDateTime.of(2023, 8, 3, 1, 2, 3, 123456789);
		result = localDateTime.compareTo(localDateTime2);
		System.out.println(result);
		assertThat(result).isEqualTo(0);

		localDateTime = LocalDateTime.of(2023, 8, 3, 1, 2, 3, 123456789);
		localDateTime2 = LocalDateTime.of(2022, 8, 3, 1, 2, 3, 123456789);
		result = localDateTime.compareTo(localDateTime2);
		System.out.println(result);
		assertThat(result).isGreaterThan(0);
	}
-1
0
1

isBefore

Compare LocalDateTime Instances 建立兩個 LocalDateTime ,檢查指定的日期時間是否早於另一個日期時間。

	@Test
	public void isBefore() {
		LocalDateTime localDateTime = LocalDateTime.of(2023, 8, 3, 1, 2, 3);
		LocalDateTime localDateTime2 = LocalDateTime.of(2024, 8, 3, 1, 2, 3);
		boolean result = localDateTime.isBefore(localDateTime2);
		System.out.println(result);
		assertThat(result).isTrue();

		result = localDateTime2.isBefore(localDateTime);
		System.out.println(result);
		assertThat(result).isFalse();
	}
true
false

isAfter

Compare LocalDateTime Instances 建立兩個 LocalDateTime ,檢查指定的日期時間是否晚於另一個日期時間。

	@Test
	public void isAfter() {
		LocalDateTime localDateTime = LocalDateTime.of(2023, 8, 3, 1, 2, 3);
		LocalDateTime localDateTime2 = LocalDateTime.of(2022, 8, 3, 1, 2, 3);
		boolean result = localDateTime.isAfter(localDateTime2);
		System.out.println(result);
		assertThat(result).isTrue();

		result = localDateTime2.isAfter(localDateTime);
		System.out.println(result);
		assertThat(result).isFalse();
	}
true
false

equals

Compare Two LocalDateTime Instances 建立兩個 LocalDateTime ,檢查指定的日期時間是否等於另一個日期時間。

	@Test
	public void equals() {
		LocalDateTime localDateTime = LocalDateTime.of(2023, 8, 3, 1, 2, 3);
		LocalDateTime localDateTime2 = LocalDateTime.of(2023, 8, 3, 1, 2, 3);
		boolean result = localDateTime.equals(localDateTime2);
		System.out.println(result);
		assertThat(result).isTrue();

		result = localDateTime2.equals(localDateTime);
		System.out.println(result);
		assertThat(result).isTrue();
	}
true
false

isEqual

Compare Two LocalDateTime Instances 建立兩個 LocalDateTime ,檢查指定的日期時間是否等於另一個日期時間。

	@Test
	public void isEqual() {
		LocalDateTime localDateTime = LocalDateTime.of(2023, 8, 3, 1, 2, 3);
		LocalDateTime localDateTime2 = LocalDateTime.of(2023, 8, 3, 1, 2, 3);
		boolean result = localDateTime.isEqual(localDateTime2);
		System.out.println(result);
		assertThat(result).isTrue();

		result = localDateTime2.isEqual(localDateTime);
		System.out.println(result);
		assertThat(result).isTrue();
	}
true
false

CompareLocalDateTimesTest.java

Compare Two LocalDateTime Instances 新增單元測試,驗證是否符合預期。

package org.ruoxue.java_147.datetime.localdatetime;

import static org.assertj.core.api.Assertions.assertThat;

import java.time.LocalDateTime;

import org.junit.Test;

public class CompareLocalDateTimesTest {

	@Test
	public void compareTo() {
		LocalDateTime localDateTime = LocalDateTime.of(2023, 8, 3, 1, 2, 3, 123456789);
		LocalDateTime localDateTime2 = LocalDateTime.of(2024, 8, 3, 1, 2, 3, 123456789);
		int result = localDateTime.compareTo(localDateTime2);
		System.out.println(result);
		assertThat(result).isLessThan(0);

		localDateTime = LocalDateTime.of(2023, 8, 3, 1, 2, 3, 123456789);
		localDateTime2 = LocalDateTime.of(2023, 8, 3, 1, 2, 3, 123456789);
		result = localDateTime.compareTo(localDateTime2);
		System.out.println(result);
		assertThat(result).isEqualTo(0);

		localDateTime = LocalDateTime.of(2023, 8, 3, 1, 2, 3, 123456789);
		localDateTime2 = LocalDateTime.of(2022, 8, 3, 1, 2, 3, 123456789);
		result = localDateTime.compareTo(localDateTime2);
		System.out.println(result);
		assertThat(result).isGreaterThan(0);
	}

	@Test
	public void isBefore() {
		LocalDateTime localDateTime = LocalDateTime.of(2023, 8, 3, 1, 2, 3);
		LocalDateTime localDateTime2 = LocalDateTime.of(2024, 8, 3, 1, 2, 3);
		boolean result = localDateTime.isBefore(localDateTime2);
		System.out.println(result);
		assertThat(result).isTrue();

		result = localDateTime2.isBefore(localDateTime);
		System.out.println(result);
		assertThat(result).isFalse();
	}

	@Test
	public void isAfter() {
		LocalDateTime localDateTime = LocalDateTime.of(2023, 8, 3, 1, 2, 3);
		LocalDateTime localDateTime2 = LocalDateTime.of(2022, 8, 3, 1, 2, 3);
		boolean result = localDateTime.isAfter(localDateTime2);
		System.out.println(result);
		assertThat(result).isTrue();

		result = localDateTime2.isAfter(localDateTime);
		System.out.println(result);
		assertThat(result).isFalse();
	}

	@Test
	public void equals() {
		LocalDateTime localDateTime = LocalDateTime.of(2023, 8, 3, 1, 2, 3);
		LocalDateTime localDateTime2 = LocalDateTime.of(2023, 8, 3, 1, 2, 3);
		boolean result = localDateTime.equals(localDateTime2);
		System.out.println(result);
		assertThat(result).isTrue();

		result = localDateTime2.equals(localDateTime);
		System.out.println(result);
		assertThat(result).isTrue();
	}
	
	@Test
	public void isEqual() {
		LocalDateTime localDateTime = LocalDateTime.of(2023, 8, 3, 1, 2, 3);
		LocalDateTime localDateTime2 = LocalDateTime.of(2023, 8, 3, 1, 2, 3);
		boolean result = localDateTime.isEqual(localDateTime2);
		System.out.println(result);
		assertThat(result).isTrue();

		result = localDateTime2.isEqual(localDateTime);
		System.out.println(result);
		assertThat(result).isTrue();
	}
}

心得分享

Compare Two LocalDateTimes in Java 比較本地日期時間,是使用提供的方法來比較並傳回布林值 – true 或 false ,對日期時間進行運算更加方便,熟悉 Compare Two LocalDateTime Instances 這些方法的操作,提升開發效率,在應用上相當廣泛。

發佈留言