Java LocalTime Class - Java 147

Java LocalTime Class – Java 147

Java LocalTime Class

新的時間 API 跟以往複雜的時間 API 有著很大的不同,像是將區域分離,讓物件功能更加專職,簡化了許多時間的操作方法,提供增加、減少、比較時間、或兩個時間差值的方法, LocalTime Class 介紹常見的 plus 、 minus 、 isBefore 、 isAfter 、 until 等方法,本篇增加了範例,並透過單元測試來驗證產出結果。

檔案目錄

./
   +- src
       +- test
       |   +- org
       |       +- ruoxue
       |           +- java_147
       |               +- datetime
       |                   +- localtime
       |                       +- LocalTimeClassTest.java   

單元測試

LocalTime Class Java 提供時間加減、比較前後等操作 LocalTime 。

plus

LocalTime Class Java 建立一個 LocalTime ,提供指定時間加法運算。

	@Test
	public void plus() {
		LocalTime localTime = LocalTime.of(9, 12, 5);
		LocalTime result = localTime.plusHours(1);
		int hour = result.getHour();
		System.out.println(hour);
		assertEquals(10, hour);

		result = localTime.plusMinutes(1);
		int minute = result.getMinute();
		System.out.println(minute);
		assertEquals(13, minute);

		result = localTime.plusSeconds(1);
		int second = result.getSecond();
		System.out.println(second);
		assertEquals(6, second);
	}
10
13
6

plusTemporalAmount

LocalTime Class Java 建立一個 LocalTime ,使用 Duration 提供指定時間加法運算。

	@Test
	public void plusTemporalAmount() {
		LocalTime localTime = LocalTime.of(9, 12, 5);
		LocalTime result = localTime.plus(Duration.ofHours(1));
		int hour = result.getHour();
		System.out.println(hour);
		assertEquals(10, hour);

		result = localTime.plus(Duration.ofMinutes(1));
		int minute = result.getMinute();
		System.out.println(minute);
		assertEquals(13, minute);

		result = localTime.plus(Duration.ofSeconds(1));
		int second = result.getSecond();
		System.out.println(second);
		assertEquals(6, second);
	}
10
13
6

minus

LocalTime Class Java 建立一個 LocalTime ,提供指定時間減法運算。

	@Test
	public void minus() {
		LocalTime localTime = LocalTime.of(9, 12, 5);
		LocalTime result = localTime.minusHours(1);
		int hour = result.getHour();
		System.out.println(hour);
		assertEquals(8, hour);

		result = localTime.minusMinutes(1);
		int minute = result.getMinute();
		System.out.println(minute);
		assertEquals(11, minute);

		result = localTime.minusSeconds(1);
		int second = result.getSecond();
		System.out.println(second);
		assertEquals(4, second);
	}
8
11
4

minusTemporalAmount

LocalTime Class Java 建立一個 LocalTime ,使用 Duration 提供指定時間減法運算。

	@Test
	public void minusTemporalAmount() {
		LocalTime localTime = LocalTime.of(9, 12, 5);
		LocalTime result = localTime.minus(Duration.ofHours(1));
		int hour = result.getHour();
		System.out.println(hour);
		assertEquals(8, hour);

		result = localTime.minus(Duration.ofMinutes(1));
		int minute = result.getMinute();
		System.out.println(minute);
		assertEquals(11, minute);

		result = localTime.minus(Duration.ofSeconds(1));
		int second = result.getSecond();
		System.out.println(second);
		assertEquals(4, second);
	}
8
11
4

isBefore

LocalTime Class in Java 建立兩個 LocalTime ,時間比對前後。

	@Test
	public void isBefore() {
		LocalTime localTime = LocalTime.of(9, 12, 5);
		LocalTime localTime2 = LocalTime.of(10, 12, 5);
		boolean result = localTime.isBefore(localTime2);
		System.out.println(result);
		assertTrue(result);
		
		result = localTime2.isBefore(localTime);
		System.out.println(result);
		assertFalse(result);
	}
true
false

isAfter

LocalTime Class in Java 建立兩個 LocalTime ,時間比對前後。

	@Test
	public void isAfter() {
		LocalTime localTime = LocalTime.of(9, 12, 5);
		LocalTime localTime2 = LocalTime.of(8, 12, 5);
		boolean result = localTime.isAfter(localTime2);
		System.out.println(result);
		assertTrue(result);
		
		result = localTime2.isAfter(localTime);
		System.out.println(result);
		assertFalse(result);
	}
	
true
false

until

LocalTime Class in Java 建立兩個 LocalTime ,取得時間的差值。

	@Test
	public void until() {
		LocalTime localTime = LocalTime.of(9, 12, 5);
		LocalTime localTime2 = LocalTime.of(10, 12, 5);
		long result = localTime.until(localTime2, ChronoUnit.HOURS);
		System.out.println(result);
		assertEquals(1, result);

		result = localTime.until(localTime2, ChronoUnit.MINUTES);
		System.out.println(result);
		assertEquals(60, result);

		result = localTime.until(localTime2, ChronoUnit.SECONDS);
		System.out.println(result);
		assertEquals(3600, result);
	}
1
60
3600

atOffset

LocalTime Class in Java 建立一個 LocalTime ,使用 ZoneOffset 取得指定時間 OffsetTime。

	@Test
	public void atOffset() {
		LocalTime localTime = LocalTime.of(9, 12, 5);
		OffsetTime result = localTime.atOffset(ZoneOffset.of("+01:00"));
		System.out.println(result);
		assertEquals("09:12:05+01:00", result.toString());

		localTime = LocalTime.of(9, 12, 5, 123456789);
		result = localTime.atOffset(ZoneOffset.ofHours(1));
		System.out.println(result);
		assertEquals("09:12:05.123456789+01:00", result.toString());
	}
09:12:05+01:00
09:12:05.123456789+01:00

LocalTimeClassTest.java

LocalTime Class in Java 新增單元測試,驗證 Java LocalTime Class Example 是否符合預期。

package org.ruoxue.java_147.datetime.localtime;

import static org.junit.Assert.*;

import java.time.Duration;
import java.time.LocalTime;
import java.time.OffsetTime;
import java.time.ZoneOffset;
import java.time.temporal.ChronoUnit;

import org.junit.Test;

public class LocalTimeClassTest {

	@Test
	public void plus() {
		LocalTime localTime = LocalTime.of(9, 12, 5);
		LocalTime result = localTime.plusHours(1);
		int hour = result.getHour();
		System.out.println(hour);
		assertEquals(10, hour);

		result = localTime.plusMinutes(1);
		int minute = result.getMinute();
		System.out.println(minute);
		assertEquals(13, minute);

		result = localTime.plusSeconds(1);
		int second = result.getSecond();
		System.out.println(second);
		assertEquals(6, second);
	}

	@Test
	public void plusTemporalAmount() {
		LocalTime localTime = LocalTime.of(9, 12, 5);
		LocalTime result = localTime.plus(Duration.ofHours(1));
		int hour = result.getHour();
		System.out.println(hour);
		assertEquals(10, hour);

		result = localTime.plus(Duration.ofMinutes(1));
		int minute = result.getMinute();
		System.out.println(minute);
		assertEquals(13, minute);

		result = localTime.plus(Duration.ofSeconds(1));
		int second = result.getSecond();
		System.out.println(second);
		assertEquals(6, second);
	}

	@Test
	public void minus() {
		LocalTime localTime = LocalTime.of(9, 12, 5);
		LocalTime result = localTime.minusHours(1);
		int hour = result.getHour();
		System.out.println(hour);
		assertEquals(8, hour);

		result = localTime.minusMinutes(1);
		int minute = result.getMinute();
		System.out.println(minute);
		assertEquals(11, minute);

		result = localTime.minusSeconds(1);
		int second = result.getSecond();
		System.out.println(second);
		assertEquals(4, second);
	}

	@Test
	public void minusTemporalAmount() {
		LocalTime localTime = LocalTime.of(9, 12, 5);
		LocalTime result = localTime.minus(Duration.ofHours(1));
		int hour = result.getHour();
		System.out.println(hour);
		assertEquals(8, hour);

		result = localTime.minus(Duration.ofMinutes(1));
		int minute = result.getMinute();
		System.out.println(minute);
		assertEquals(11, minute);

		result = localTime.minus(Duration.ofSeconds(1));
		int second = result.getSecond();
		System.out.println(second);
		assertEquals(4, second);
	}

	@Test
	public void isBefore() {
		LocalTime localTime = LocalTime.of(9, 12, 5);
		LocalTime localTime2 = LocalTime.of(10, 12, 5);
		boolean result = localTime.isBefore(localTime2);
		System.out.println(result);
		assertTrue(result);
		
		result = localTime2.isBefore(localTime);
		System.out.println(result);
		assertFalse(result);
	}

	@Test
	public void isAfter() {
		LocalTime localTime = LocalTime.of(9, 12, 5);
		LocalTime localTime2 = LocalTime.of(8, 12, 5);
		boolean result = localTime.isAfter(localTime2);
		System.out.println(result);
		assertTrue(result);
		
		result = localTime2.isAfter(localTime);
		System.out.println(result);
		assertFalse(result);
	}

	@Test
	public void until() {
		LocalTime localTime = LocalTime.of(9, 12, 5);
		LocalTime localTime2 = LocalTime.of(10, 12, 5);
		long result = localTime.until(localTime2, ChronoUnit.HOURS);
		System.out.println(result);
		assertEquals(1, result);

		result = localTime.until(localTime2, ChronoUnit.MINUTES);
		System.out.println(result);
		assertEquals(60, result);

		result = localTime.until(localTime2, ChronoUnit.SECONDS);
		System.out.println(result);
		assertEquals(3600, result);
	}

	@Test
	public void atOffset() {
		LocalTime localTime = LocalTime.of(9, 12, 5);
		OffsetTime result = localTime.atOffset(ZoneOffset.of("+01:00"));
		System.out.println(result);
		assertEquals("09:12:05+01:00", result.toString());

		localTime = LocalTime.of(9, 12, 5, 123456789);
		result = localTime.atOffset(ZoneOffset.ofHours(1));
		System.out.println(result);
		assertEquals("09:12:05.123456789+01:00", result.toString());
	}
}

心得分享

Java LocalTime Class Example 屬於 java.time ,物件的值不會被改變,可以同時在不同的執行緒下被使用, LocalTime Class in Java 提供 plus 、 minus 、 isBefore 、 isAfter 、 until 等操作範例。

發佈留言