Java LocalTime Methods - Java 147

Java LocalTime Methods – Java 147

Java LocalTime Methods

屬於 java.time ,提供了一組時間相關的 API ,物件的值是不可變的並且也是線程安全的,介紹常見的 now 、 of 、 get 、 with 等方法, LocalTime Java Methods 本篇增加了範例,並透過單元測試來驗證產出結果。

檔案目錄

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

單元測試

提供目前時間、建立、取得等操作 LocalTime 。

now

LocalTime Methods Java 建立一個 LocalTime ,提供目前時間。

	@Test
	public void now() {
		LocalTime localTime = LocalTime.now();
		System.out.println(localTime);

		ZoneId zone = ZoneId.of("Europe/London");
		localTime = LocalTime.now(zone);
		System.out.println(localTime);

		zone = ZoneId.of("UTC+1");
		Clock clock = Clock.system(zone);
		localTime = LocalTime.now(clock);
		System.out.println(localTime);

		zone = ZoneId.of("Etc/GMT-1");
		localTime = LocalTime.now(zone);
		System.out.println(localTime);
	}
21:18:06.689
14:18:06.690
14:18:06.695
14:18:06.695

of

LocalTime Methods Java 建立一個 LocalTime ,建立指定時間。

	@Test
	public void of() {
		LocalTime localTime = LocalTime.of(9, 12, 5);
		System.out.println(localTime);
		assertEquals("09:12:05", localTime.toString());

		long secondOfDay = localTime.toSecondOfDay();
		System.out.println(secondOfDay);
		assertEquals(33125, secondOfDay);

		localTime = LocalTime.of(10, 12, 5);
		System.out.println(localTime);
		assertEquals("10:12:05", localTime.toString());

		localTime = LocalTime.ofSecondOfDay(40325);
		System.out.println(localTime);
		assertEquals("11:12:05", localTime.toString());
	}
09:12:05
33125
10:12:05
11:12:05

get

LocalTime Methods Java 建立一個 LocalTime ,取得指定欄位,如:時、分、秒等。

	@Test
	public void get() {
		LocalTime localTime = LocalTime.of(9, 12, 5);
		int hourOfDay = localTime.get(ChronoField.HOUR_OF_DAY);
		System.out.println(hourOfDay);
		assertEquals(9, hourOfDay);

		int minuteOfHour = localTime.get(ChronoField.MINUTE_OF_HOUR);
		System.out.println(minuteOfHour);
		assertEquals(12, minuteOfHour);

		int secondOfMinute = localTime.get(ChronoField.SECOND_OF_MINUTE);
		System.out.println(secondOfMinute);
		assertEquals(5, secondOfMinute);
	}
9
12
5

getValue

LocalTime Methods in Java 建立一個 LocalTime ,取得指定欄位,如:時、分、秒等。

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

		int minute = localTime.getMinute();
		System.out.println(minute);
		assertEquals(12, minute);

		int second = localTime.getSecond();
		System.out.println(second);
		assertEquals(5, second);
	}
9
12
5

with

LocalTime Methods in Java 建立一個 LocalTime ,調整指定欄位,如:時、分、秒等,會傳回新物件。

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

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

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

withTemporalAdjuster

LocalTime Methods in Java 建立一個 LocalTime ,使用 TemporalAdjuster 調整指定欄位,如:時、分、秒等,會傳回新物件。

	@Test
	public void withTemporalAdjuster() {
		LocalTime localTime = LocalTime.of(9, 12, 5);
		LocalTime result = localTime.with(ChronoField.HOUR_OF_DAY, 10);
		System.out.println(result);
		assertEquals("10:12:05", result.toString());

		TemporalAdjuster temporalAdjuster = t -> t.plus(Duration.ofHours(2));
		result = localTime.with(temporalAdjuster);
		System.out.println(result);
		assertEquals("11:12:05", result.toString());

		result = localTime.with(t -> t.plus(Duration.ofMinutes(1)));
		System.out.println(result);
		assertEquals("09:13:05", result.toString());
		
		result = localTime.with(t -> t.plus(Duration.ofSeconds(1)));
		System.out.println(result);
		assertEquals("09:12:06", result.toString());
	}
10:12:05
11:12:05
09:13:05
09:12:06

LocalDateMethodsTest.java

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

package org.ruoxue.java_147.datetime.localtime;

import static org.junit.Assert.*;

import java.time.Clock;
import java.time.Duration;
import java.time.LocalTime;
import java.time.ZoneId;
import java.time.temporal.ChronoField;
import java.time.temporal.TemporalAdjuster;

import org.junit.Test;

public class LocalTimeMethodsTest {

	@Test
	public void now() {
		LocalTime localTime = LocalTime.now();
		System.out.println(localTime);

		ZoneId zone = ZoneId.of("Europe/London");
		localTime = LocalTime.now(zone);
		System.out.println(localTime);

		zone = ZoneId.of("UTC+1");
		Clock clock = Clock.system(zone);
		localTime = LocalTime.now(clock);
		System.out.println(localTime);

		zone = ZoneId.of("Etc/GMT-1");
		localTime = LocalTime.now(zone);
		System.out.println(localTime);
	}

	@Test
	public void of() {
		LocalTime localTime = LocalTime.of(9, 12, 5);
		System.out.println(localTime);
		assertEquals("09:12:05", localTime.toString());

		long secondOfDay = localTime.toSecondOfDay();
		System.out.println(secondOfDay);
		assertEquals(33125, secondOfDay);

		localTime = LocalTime.of(10, 12, 5);
		System.out.println(localTime);
		assertEquals("10:12:05", localTime.toString());

		localTime = LocalTime.ofSecondOfDay(40325);
		System.out.println(localTime);
		assertEquals("11:12:05", localTime.toString());
	}

	@Test
	public void get() {
		LocalTime localTime = LocalTime.of(9, 12, 5);
		int hourOfDay = localTime.get(ChronoField.HOUR_OF_DAY);
		System.out.println(hourOfDay);
		assertEquals(9, hourOfDay);

		int minuteOfHour = localTime.get(ChronoField.MINUTE_OF_HOUR);
		System.out.println(minuteOfHour);
		assertEquals(12, minuteOfHour);

		int secondOfMinute = localTime.get(ChronoField.SECOND_OF_MINUTE);
		System.out.println(secondOfMinute);
		assertEquals(5, secondOfMinute);
	}

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

		int minute = localTime.getMinute();
		System.out.println(minute);
		assertEquals(12, minute);

		int second = localTime.getSecond();
		System.out.println(second);
		assertEquals(5, second);
	}

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

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

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

	@Test
	public void withTemporalAdjuster() {
		LocalTime localTime = LocalTime.of(9, 12, 5);
		LocalTime result = localTime.with(ChronoField.HOUR_OF_DAY, 10);
		System.out.println(result);
		assertEquals("10:12:05", result.toString());

		TemporalAdjuster temporalAdjuster = t -> t.plus(Duration.ofHours(2));
		result = localTime.with(temporalAdjuster);
		System.out.println(result);
		assertEquals("11:12:05", result.toString());

		result = localTime.with(t -> t.plus(Duration.ofMinutes(1)));
		System.out.println(result);
		assertEquals("09:13:05", result.toString());
		
		result = localTime.with(t -> t.plus(Duration.ofSeconds(1)));
		System.out.println(result);
		assertEquals("09:12:06", result.toString());
	}
}

心得分享

LocalTime Functions in Java 表示時間,預設格式為 HH:mm:ss.SSSSSSSSS 遵循 ISO-8601 格式, 實現 Temporal 、 TemporalAdjuster 接口,熟悉 LocalTime Methods in Java 這些方法的操作,提供 now 、 of 、 get 、 with 等常見方法的操作範例,提升開發效率,在應用上相當廣泛。

發佈留言