Table of Contents
ToggleInitialize LocalTime in Java
初始化 LocalTime 物件的值不會被改變,可以同時在不同的執行緒下被使用,介紹常見的 of 、 parse 、 ofSecondOfDay 等方法,了解 Initialize LocalTime Java 的不同操作和方法,本篇增加了範例,並透過單元測試來驗證產出結果。
檔案目錄
./
+- src
+- test
| +- org
| +- ruoxue
| +- java_147
| +- datetime
| +- localtime
| +- InitializeLocalTimeTest.java
單元測試
Java Initialize LocalTime 提供初始化操作 LocalTime 。
now
Java Initialize LocalTime 建立一個 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:03:22.559
14:03:22.561
14:03:22.566
14:03:22.566
of
Java Initialize LocalTime 建立一個 LocalTime ,建立指定時間。
@Test
public void of() {
LocalTime localTime = LocalTime.of(9, 12, 5);
System.out.println(localTime);
assertEquals("09:12:05", localTime.toString());
int secondOfDay = localTime.toSecondOfDay();
System.out.println(secondOfDay);
assertEquals(33125L, secondOfDay);
localTime = LocalTime.of(9, 12, 6, 123456789);
System.out.println(localTime);
assertEquals("09:12:06.123456789", localTime.toString());
localTime = LocalTime.ofSecondOfDay(33127L);
System.out.println(localTime);
assertEquals("09:12:07", localTime.toString());
}
09:12:05
33125
09:12:06.123456789
09:12:07
parse
Java Initialize LocalTime 建立一個 LocalTime ,建立指定時間。
@Test
public void parse() {
LocalTime localTime = LocalTime.parse("09:12:05");
System.out.println(localTime);
assertEquals("09:12:05", localTime.toString());
localTime = LocalTime.parse("091205", DateTimeFormatter.ofPattern("HHmmss"));
System.out.println(localTime);
assertEquals("09:12:05", 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
09:12:05.123
from
LocalTime Initialization 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
ofSecondOfDay
LocalTime Initialization Java 建立一個 LocalTime ,將本日秒轉成指定時間。
@Test
public void ofSecondOfDay() {
LocalTime localTime = LocalTime.ofSecondOfDay(33125L);
System.out.println(localTime);
assertEquals("09:12:05", localTime.toString());
}
09:12:05
ofNanoOfDay
LocalTime Initialization Java 建立一個 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
InitializeLocalTimeTest.java
LocalTime Initialization Java 新增單元測試,驗證 Java LocalTime Initialize 是否符合預期。
package org.ruoxue.java_147.datetime.localtime;
import static org.junit.Assert.*;
import java.time.Clock;
import java.time.LocalTime;
import java.time.OffsetTime;
import java.time.ZoneId;
import java.time.ZoneOffset;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import org.junit.Test;
public class InitializeLocalTimeTest {
@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());
int secondOfDay = localTime.toSecondOfDay();
System.out.println(secondOfDay);
assertEquals(33125L, secondOfDay);
localTime = LocalTime.of(9, 12, 6, 123456789);
System.out.println(localTime);
assertEquals("09:12:06.123456789", localTime.toString());
localTime = LocalTime.ofSecondOfDay(33127L);
System.out.println(localTime);
assertEquals("09:12:07", localTime.toString());
}
@Test
public void parse() {
LocalTime localTime = LocalTime.parse("09:12:05");
System.out.println(localTime);
assertEquals("09:12:05", localTime.toString());
localTime = LocalTime.parse("091205", DateTimeFormatter.ofPattern("HHmmss"));
System.out.println(localTime);
assertEquals("09:12:05", 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 ofSecondOfDay() {
LocalTime localTime = LocalTime.ofSecondOfDay(33125L);
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());
}
}
心得分享
Java LocalTime Initialize 新的時間 API,將區域獨立成一個類別,減少時間的複雜度,讓時間進行運算時更加便利,LocalTime Initialization Java 提供了幾種 LocalTime 初始化的操作範例,使用單元測試驗證產出結果。