OffsetTime in Java with Examples - Java 147

OffsetTime in Java with Examples – Java 147

OffsetTime 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 等方法。

發佈留言