Table of Contents
ToggleJava 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 等常見方法的操作範例,提升開發效率,在應用上相當廣泛。