LocalTime in Java with Examples - Java 147

LocalTime in Java with Examples – Java 147

LocalTime in Java with Examples

表示時間,預設格式為 HH:mm:ss.SSSSSSSSS 遵循 ISO-8601 格式, 實現 Temporal 、 TemporalAdjuster 接口,LocalTime in Java 介紹常見的 format 、 parse 、 ofSecondOfDay 等方法,本篇增加了範例,並透過單元測試來驗證產出結果。

檔案目錄

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

單元測試

提供時間建立、格式化等操作 LocalTime 。

format

LocalTime Java 建立一個 LocalTime ,格式化指定時間。

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

		localTime = LocalTime.of(9, 12, 5, 123456789);
		result = localTime.format(DateTimeFormatter.ISO_LOCAL_TIME);
		System.out.println(result);
		assertEquals("09:12:05.123456789", result);

		result = localTime.format(DateTimeFormatter.ofPattern("HH-mm-ss.SSS"));
		System.out.println(result);
		assertEquals("09-12-05.123", result);
	}
09:12:05
09:12:05.123456789
09-12-05.123

parse

LocalTime Java 建立一個 LocalTime ,使用 String 建立指定時間。

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

		localTime = LocalTime.parse("09:12:05.123456789");
		System.out.println(localTime);
		assertEquals("09:12:05.123456789", localTime.toString());

		localTime = LocalTime.parse("09-12-05.123", DateTimeFormatter.ofPattern("HH-mm-ss.SSS"));
		System.out.println(localTime);
		assertEquals("09:12:05.123", localTime.toString());
	}
09:12:05
09:12:05.123456789
09:12:05.123

from

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

	@Test
	public void from() {
		LocalTime localTime = LocalTime.parse("09:12:05.123456789");
		LocalTime result = LocalTime.from(localTime);
		System.out.println(result);
		assertEquals("09:12:05.123456789", result.toString());

		localTime = LocalTime.parse("09:12:05.123");
		ZoneOffset zoneOffset = ZoneOffset.of("+01:00");
		OffsetTime offsetTime = OffsetTime.of(localTime, zoneOffset);
		System.out.println(offsetTime);
		result = LocalTime.from(offsetTime);
		System.out.println(result);
		assertEquals("09:12:05.123", result.toString());

		ZonedDateTime zonedDateTime = ZonedDateTime.parse("2023-12-25T09:12:05+01:00[Europe/London]");
		result = LocalTime.from(zonedDateTime);
		System.out.println(result);
		assertEquals("09:12:05", result.toString());
	}
09:12:05.123456789
09:12:05.123+01:00
09:12:05.123
09:12:05

toSecondOfDay

Java LocalTime 建立一個 LocalTime ,取得本日秒,從 00:00:00 起。

	@Test
	public void toSecondOfDay() {
		LocalTime localTime = LocalTime.of(9, 12, 5);
		long result = localTime.toSecondOfDay();
		System.out.println(result);
		assertEquals(33125L, result);
	}
33125

ofSecondOfDay

Java LocalTime 建立一個 LocalTime ,將本日秒轉成指定時間。

	@Test
	public void ofSecondOfDay() {
		LocalTime localTime = LocalTime.ofSecondOfDay(33125);
		System.out.println(localTime);
		assertEquals("09:12:05", localTime.toString());
	}
09:12:05

ofNanoOfDay

Java LocalTime 建立一個 LocalTime ,將本日奈秒轉成指定時間。

	@Test
	public void ofNanoOfDay() {
		LocalTime localTime = LocalTime.ofNanoOfDay(33125123456789L);
		System.out.println(localTime);
		assertEquals("09:12:05.123456789", localTime.toString());
	}
09:12:05.123456789

truncatedTo

Java LocalTime 建立一個 LocalTime ,捨棄欄位到指定欄位。

	@Test
	public void truncatedTo() {
		LocalTime localTime = LocalTime.of(9, 12, 5, 123456789);
		LocalTime result = localTime.truncatedTo(ChronoUnit.HOURS);
		System.out.println(result);
		assertEquals("09:00", result.toString());

		result = localTime.truncatedTo(ChronoUnit.MINUTES);
		System.out.println(result);
		assertEquals("09:12", result.toString());
		
		result = localTime.truncatedTo(ChronoUnit.MILLIS);
		System.out.println(result);
		assertEquals("09:12:05.123", result.toString());
	}
09:00
09:12
09:12:05.123

LocalTimeWithExamplesTest.java

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

package org.ruoxue.java_147.datetime.localtime;

import static org.junit.Assert.*;

import java.time.LocalTime;
import java.time.OffsetTime;
import java.time.ZoneOffset;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;

import org.junit.Test;

public class LocalTimeWithExamplesTest {

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

		localTime = LocalTime.of(9, 12, 5, 123456789);
		result = localTime.format(DateTimeFormatter.ISO_LOCAL_TIME);
		System.out.println(result);
		assertEquals("09:12:05.123456789", result);

		result = localTime.format(DateTimeFormatter.ofPattern("HH-mm-ss.SSS"));
		System.out.println(result);
		assertEquals("09-12-05.123", result);
	}

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

		localTime = LocalTime.parse("09:12:05.123456789");
		System.out.println(localTime);
		assertEquals("09:12:05.123456789", localTime.toString());

		localTime = LocalTime.parse("09-12-05.123", DateTimeFormatter.ofPattern("HH-mm-ss.SSS"));
		System.out.println(localTime);
		assertEquals("09:12:05.123", localTime.toString());
	}

	@Test
	public void from() {
		LocalTime localTime = LocalTime.parse("09:12:05.123456789");
		LocalTime result = LocalTime.from(localTime);
		System.out.println(result);
		assertEquals("09:12:05.123456789", result.toString());

		localTime = LocalTime.parse("09:12:05.123");
		ZoneOffset zoneOffset = ZoneOffset.of("+01:00");
		OffsetTime offsetTime = OffsetTime.of(localTime, zoneOffset);
		System.out.println(offsetTime);
		result = LocalTime.from(offsetTime);
		System.out.println(result);
		assertEquals("09:12:05.123", result.toString());

		ZonedDateTime zonedDateTime = ZonedDateTime.parse("2023-12-25T09:12:05+01:00[Europe/London]");
		result = LocalTime.from(zonedDateTime);
		System.out.println(result);
		assertEquals("09:12:05", result.toString());
	}

	@Test
	public void toSecondOfDay() {
		LocalTime localTime = LocalTime.of(9, 12, 5);
		long result = localTime.toSecondOfDay();
		System.out.println(result);
		assertEquals(33125L, result);
	}

	@Test
	public void ofSecondOfDay() {
		LocalTime localTime = LocalTime.ofSecondOfDay(33125);
		System.out.println(localTime);
		assertEquals("09:12:05", localTime.toString());
	}

	@Test
	public void ofNanoOfDay() {
		LocalTime localTime = LocalTime.ofNanoOfDay(33125123456789L);
		System.out.println(localTime);
		assertEquals("09:12:05.123456789", localTime.toString());
	}

	@Test
	public void truncatedTo() {
		LocalTime localTime = LocalTime.of(9, 12, 5, 123456789);
		LocalTime result = localTime.truncatedTo(ChronoUnit.HOURS);
		System.out.println(result);
		assertEquals("09:00", result.toString());

		result = localTime.truncatedTo(ChronoUnit.MINUTES);
		System.out.println(result);
		assertEquals("09:12", result.toString());

		result = localTime.truncatedTo(ChronoUnit.MILLIS);
		System.out.println(result);
		assertEquals("09:12:05.123", result.toString());
	}
}

心得分享

Java LocalTime Example 提供了一組時間相關的 API ,物件的值不會被改變,可以同時在不同的執行緒下被使用,提供了幾種 LocalTime 常見方法的操作範例,在應用上相當廣泛,熟悉 Java LocalTime 這些方法的操作,像是: format 、 parse 、 ofSecondOfDay 等方法。

發佈留言