Table of Contents
ToggleOffsetTime in Java with Examples
儲存時間,精確到奈秒,以及帶有偏移量的時間,用於處理不明確的本地時間,精確到奈秒以及與 UTC / 格林威治的偏移量,OffsetTime in Java 介紹常見的 format 、 parse 、 ofLocalTime 等方法,本篇增加了範例,並透過單元測試來驗證產出結果。
檔案目錄
./
+- src
+- test
| +- org
| +- ruoxue
| +- java_147
| +- datetime
| +- offsettime
| +- OffsetTimeWithExamplesTest.java
單元測試
OffsetTime Java 提供日期時間建立、格式化等操作 OffsetTime 。
format
建立一個 OffsetTime ,格式化指定日期時間。
@Test
public void format() {
ZoneOffset offset = ZoneOffset.ofHours(-5);
OffsetTime offsetTime = OffsetTime.of(6, 1, 4, 0, offset);
String result = offsetTime.format(DateTimeFormatter.ISO_OFFSET_TIME);
System.out.println(result);
assertEquals("06:01:04-05:00", result);
offsetTime = OffsetTime.of(6, 1, 4, 123456789, offset);
result = offsetTime.format(DateTimeFormatter.ISO_OFFSET_TIME);
System.out.println(result);
assertEquals("06:01:04.123456789-05:00", result);
result = offsetTime.format(DateTimeFormatter.ofPattern("HH-mm-ss.SSS-05:00"));
System.out.println(result);
assertEquals("06-01-04.123-05:00", result);
}
06:01:04-05:00
06:01:04.123456789-05:00
06-01-04.123-05:00
parse
OffsetTime Java 建立一個 OffsetTime ,使用 String 建立指定日期時間。
@Test
public void parse() {
OffsetTime offsetTime = OffsetTime.parse("06:01:04-05:00");
System.out.println(offsetTime);
assertEquals("06:01:04-05:00", offsetTime.toString());
offsetTime = OffsetTime.parse("06:01:04.123456789-05:00");
System.out.println(offsetTime);
assertEquals("06:01:04.123456789-05:00", offsetTime.toString());
}
06:01:04-05:00
06:01:04.123456789-05:00
from
OffsetTime Java 建立一個 OffsetTime ,從另一個日期時間,建立指定日期時間。
@Test
public void from() {
OffsetTime offsetTime = OffsetTime.parse("06:01:04.123456789-05:00");
OffsetTime result = OffsetTime.from(offsetTime);
System.out.println(result);
assertEquals("06:01:04.123456789-05:00", result.toString());
ZonedDateTime zonedDateTime = ZonedDateTime.parse("2023-11-11T06:01:04-05:00[Brazil/Acre]");
result = OffsetTime.from(zonedDateTime);
System.out.println(result);
assertEquals("06:01:04-05:00", result.toString());
}
06:01:04.123456789-05:00
06:01:04-05:00
toLocalTime
Java OffsetTime 建立一個 OffsetTime ,取得時間。
@Test
public void toLocalTime() {
ZoneOffset offset = ZoneOffset.ofHours(-5);
OffsetTime offsetTime = OffsetTime.of(6, 1, 4, 0, offset);
LocalTime result = offsetTime.toLocalTime();
System.out.println(result);
assertEquals("06:01:04", result.toString());
}
06:01:04
ofLocalTime
Java OffsetTime 建立一個 OffsetTime ,從 LocalTime 轉成 OffsetTime 。
@Test
public void ofLocalTime() {
ZoneOffset offset = ZoneOffset.ofHours(-5);
LocalTime localTime = LocalTime.of(6, 1, 4);
OffsetTime offsetTime = OffsetTime.of(localTime, offset);
System.out.println(offsetTime);
assertEquals("06:01:04-05:00", offsetTime.toString());
}
06:01:04-05:00
truncatedTo
Java OffsetTime 建立一個 OffsetTime ,捨棄欄位到指定欄位。
@Test
public void truncatedTo() {
ZoneOffset offset = ZoneOffset.ofHours(-5);
OffsetTime offsetTime = OffsetTime.of(6, 1, 4, 123456789, offset);
OffsetTime result = offsetTime.truncatedTo(ChronoUnit.HOURS);
System.out.println(result);
assertEquals("06:00-05:00", result.toString());
result = offsetTime.truncatedTo(ChronoUnit.MINUTES);
System.out.println(result);
assertEquals("06:01-05:00", result.toString());
result = offsetTime.truncatedTo(ChronoUnit.MILLIS);
System.out.println(result);
assertEquals("06:01:04.123-05:00", result.toString());
}
06:00-05:00
06:01-05:00
06:01:04.123-05:00
OffsetTimeWithExamplesTest.java
OffsetTime in Java 新增單元測試,驗證 Java OffsetTime Example 是否符合預期。
package org.ruoxue.java_147.datetime.offsettime;
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 OffsetTimeWithExamplesTest {
@Test
public void format() {
ZoneOffset offset = ZoneOffset.ofHours(-5);
OffsetTime offsetTime = OffsetTime.of(6, 1, 4, 0, offset);
String result = offsetTime.format(DateTimeFormatter.ISO_OFFSET_TIME);
System.out.println(result);
assertEquals("06:01:04-05:00", result);
offsetTime = OffsetTime.of(6, 1, 4, 123456789, offset);
result = offsetTime.format(DateTimeFormatter.ISO_OFFSET_TIME);
System.out.println(result);
assertEquals("06:01:04.123456789-05:00", result);
result = offsetTime.format(DateTimeFormatter.ofPattern("HH-mm-ss.SSS-05:00"));
System.out.println(result);
assertEquals("06-01-04.123-05:00", result);
}
@Test
public void parse() {
OffsetTime offsetTime = OffsetTime.parse("06:01:04-05:00");
System.out.println(offsetTime);
assertEquals("06:01:04-05:00", offsetTime.toString());
offsetTime = OffsetTime.parse("06:01:04.123456789-05:00");
System.out.println(offsetTime);
assertEquals("06:01:04.123456789-05:00", offsetTime.toString());
}
@Test
public void from() {
OffsetTime offsetTime = OffsetTime.parse("06:01:04.123456789-05:00");
OffsetTime result = OffsetTime.from(offsetTime);
System.out.println(result);
assertEquals("06:01:04.123456789-05:00", result.toString());
ZonedDateTime zonedDateTime = ZonedDateTime.parse("2023-11-11T06:01:04-05:00[Brazil/Acre]");
result = OffsetTime.from(zonedDateTime);
System.out.println(result);
assertEquals("06:01:04-05:00", result.toString());
}
@Test
public void toLocalTime() {
ZoneOffset offset = ZoneOffset.ofHours(-5);
OffsetTime offsetTime = OffsetTime.of(6, 1, 4, 0, offset);
LocalTime result = offsetTime.toLocalTime();
System.out.println(result);
assertEquals("06:01:04", result.toString());
}
@Test
public void ofLocalTime() {
ZoneOffset offset = ZoneOffset.ofHours(-5);
LocalTime localTime = LocalTime.of(6, 1, 4);
OffsetTime offsetTime = OffsetTime.of(localTime, offset);
System.out.println(offsetTime);
assertEquals("06:01:04-05:00", offsetTime.toString());
}
@Test
public void truncatedTo() {
ZoneOffset offset = ZoneOffset.ofHours(-5);
OffsetTime offsetTime = OffsetTime.of(6, 1, 4, 123456789, offset);
OffsetTime result = offsetTime.truncatedTo(ChronoUnit.HOURS);
System.out.println(result);
assertEquals("06:00-05:00", result.toString());
result = offsetTime.truncatedTo(ChronoUnit.MINUTES);
System.out.println(result);
assertEquals("06:01-05:00", result.toString());
result = offsetTime.truncatedTo(ChronoUnit.MILLIS);
System.out.println(result);
assertEquals("06:01:04.123-05:00", result.toString());
}
}
心得分享
Java OffsetTime Example 此類別是不可變的且執行緒安全的,存儲所有時間字段,精確到奈秒及區域偏移量,提供了幾種 OffsetTime 常見方法的操作範例,在應用上相當廣泛,熟悉 Java OffsetTime 這些方法的操作,像是: format 、 parse 、 ofLocalTime 等方法。