Table of Contents
ToggleJava 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 等操作範例。