Java Convert LocalDate to LocalDateTime - Java 147

Java Convert LocalDate to LocalDateTime – Java 147

Java Convert LocalDate to LocalDateTime

將 LocalDate 轉換為 LocalDateTime,在日期後附加時間和時區信息,轉換步驟如下: 1. 取得時區,以便可以將時區資訊附加到日期,2. 調用 atStartOfDay 以便可以將時間附加到日期, Java LocalDate LocalDateTime 任務是將該 LocalDate 轉換為 LocalDateTime ,本篇增加了範例,並透過單元測試來驗證產出結果。

檔案目錄

./
   +- src
       +- test
       |   +- org
       |       +- ruoxue
       |           +- java_147
       |               +- conversion
       |                   +- datetime
       |                       +- LocalDateToLocalDateTimeTest.java   

單元測試

Java LocalDate to LocalDateTime 提供 LocalDate 轉換成 LocalDateTime 等操作。

atStartOfDay

Java LocalDate to LocalDateTime 使用 atStartOfDay 轉換成 LocalDateTime 。

	@Test
	public void atStartOfDay() {
		LocalDate localDate = LocalDate.of(2023, 4, 4);
		LocalDateTime result = localDate.atStartOfDay();
		System.out.println(result);
		assertEquals("2023-04-04T00:00", result.toString());

		localDate = LocalDate.parse("2023-04-04");
		result = localDate.atStartOfDay();
		System.out.println(result);
		assertEquals("2023-04-04T00:00", result.toString());
	}
2023-04-04T00:00
2023-04-04T00:00

atStartOfDayWithZone

Java LocalDate to LocalDateTime 使用 ZonedDateTime 轉換成 LocalDateTime 。

	@Test
	public void atStartOfDayWithZone() {
		LocalDate localDate = LocalDate.of(2023, 4, 4);
		ZoneId zone = ZoneId.of("Asia/Sakhalin");
		ZonedDateTime zonedDateTime = localDate.atStartOfDay(zone);
		LocalDateTime result = zonedDateTime.toLocalDateTime();
		System.out.println(result);
		assertEquals("2023-04-04T00:00", result.toString());

		localDate = LocalDate.parse("2023-04-04");
		zonedDateTime = localDate.atStartOfDay(zone);
		result = zonedDateTime.toLocalDateTime();
		System.out.println(result);
		assertEquals("2023-04-04T00:00", result.toString());
	}
2023-04-04T00:00
2023-04-04T00:00

atTime

Java LocalDate to LocalDateTime 使用 atTime 轉換成 LocalDateTime 。

	@Test
	public void atTime() {
		LocalDate localDate = LocalDate.of(2023, 4, 4);
		LocalTime localTime = LocalTime.of(5, 4, 3, 21);
		LocalDateTime result = localDate.atTime(localTime);
		System.out.println(result);
		assertEquals("2023-04-04T05:04:03.000000021", result.toString());

		localDate = LocalDate.parse("2023-04-04");
		localTime = LocalTime.parse("05:04:03.000000021");
		result = localDate.atTime(localTime);
		System.out.println(result);
		assertEquals("2023-04-04T05:04:03.000000021", result.toString());
	}
2023-04-04T05:04:03.000000021
2023-04-04T05:04:03.000000021

atTimeWithMinute

Convert LocalDate to LocalDateTime in Java 使用 atTime 轉換成 LocalDateTime 。

	@Test
	public void atTimeWithMinute() {
		LocalDate localDate = LocalDate.of(2023, 4, 4);
		LocalDateTime result = localDate.atTime(5, 4);
		System.out.println(result);
		assertEquals("2023-04-04T05:04", result.toString());

		localDate = LocalDate.parse("2023-04-04");
		result = localDate.atTime(5, 4);
		System.out.println(result);
		assertEquals("2023-04-04T05:04", result.toString());
	}
2023-04-04T05:04
2023-04-04T05:04

atTimeWithSecond

Convert LocalDate to LocalDateTime in Java 使用 atTime 轉換成 LocalDateTime 。

	@Test
	public void atTimeWithSecond() {
		LocalDate localDate = LocalDate.of(2023, 4, 4);
		LocalDateTime result = localDate.atTime(5, 4, 3);
		System.out.println(result);
		assertEquals("2023-04-04T05:04:03", result.toString());

		localDate = LocalDate.parse("2023-04-04");
		result = localDate.atTime(5, 4, 3);
		System.out.println(result);
		assertEquals("2023-04-04T05:04:03", result.toString());
	}
2023-04-04T05:04:03
2023-04-04T05:04:03

atTimeWithNano

Convert LocalDate to LocalDateTime in Java 使用 atTime 轉換成 LocalDateTime 。

	@Test
	public void atTimeWithNano() {
		LocalDate localDate = LocalDate.of(2023, 4, 4);
		LocalDateTime result = localDate.atTime(5, 4, 3, 21);
		System.out.println(result);
		assertEquals("2023-04-04T05:04:03.000000021", result.toString());

		localDate = LocalDate.parse("2023-04-04");
		result = localDate.atTime(5, 4, 3, 21);
		System.out.println(result);
		assertEquals("2023-04-04T05:04:03.000000021", result.toString());
	}
2023-04-04T05:04:03.000000021
2023-04-04T05:04:03.000000021

atTimeWithOffsetTime

Convert LocalDate to LocalDateTime in Java 使用 OffsetDateTime 轉換成 LocalDateTime 。

	@Test
	public void atTimeWithOffsetTime() {
		LocalDate localDate = LocalDate.of(2023, 4, 4);
		ZoneOffset offset = ZoneOffset.ofHours(11);
		OffsetTime offsetTime = OffsetTime.of(5, 4, 3, 21, offset);
		System.out.println(offsetTime);
		OffsetDateTime offsetDateTime = localDate.atTime(offsetTime);
		LocalDateTime result = offsetDateTime.toLocalDateTime();
		System.out.println(result);
		assertEquals("2023-04-04T05:04:03.000000021", result.toString());

		localDate = LocalDate.parse("2023-04-04");
		offsetDateTime = localDate.atTime(offsetTime);
		result = offsetDateTime.toLocalDateTime();
		System.out.println(result);
		assertEquals("2023-04-04T05:04:03.000000021", result.toString());
	}
05:04:03.000000021+11:00
2023-04-04T05:04:03.000000021
2023-04-04T05:04:03.000000021

LocalDateToLocalDateTimeTest.java

Convert LocalDate to LocalDateTime in Java 新增單元測試,驗證是否符合預期。

package org.ruoxue.java_147.conversion.datetime;

import static org.junit.Assert.*;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.OffsetDateTime;
import java.time.OffsetTime;
import java.time.ZoneId;
import java.time.ZoneOffset;
import java.time.ZonedDateTime;

import org.junit.Test;

public class LocalDateToLocalDateTimeTest {

	@Test
	public void atStartOfDay() {
		LocalDate localDate = LocalDate.of(2023, 4, 4);
		LocalDateTime result = localDate.atStartOfDay();
		System.out.println(result);
		assertEquals("2023-04-04T00:00", result.toString());

		localDate = LocalDate.parse("2023-04-04");
		result = localDate.atStartOfDay();
		System.out.println(result);
		assertEquals("2023-04-04T00:00", result.toString());
	}

	@Test
	public void atStartOfDayWithZone() {
		LocalDate localDate = LocalDate.of(2023, 4, 4);
		ZoneId zone = ZoneId.of("Asia/Sakhalin");
		ZonedDateTime zonedDateTime = localDate.atStartOfDay(zone);
		LocalDateTime result = zonedDateTime.toLocalDateTime();
		System.out.println(result);
		assertEquals("2023-04-04T00:00", result.toString());

		localDate = LocalDate.parse("2023-04-04");
		zonedDateTime = localDate.atStartOfDay(zone);
		result = zonedDateTime.toLocalDateTime();
		System.out.println(result);
		assertEquals("2023-04-04T00:00", result.toString());
	}

	@Test
	public void atTime() {
		LocalDate localDate = LocalDate.of(2023, 4, 4);
		LocalTime localTime = LocalTime.of(5, 4, 3, 21);
		LocalDateTime result = localDate.atTime(localTime);
		System.out.println(result);
		assertEquals("2023-04-04T05:04:03.000000021", result.toString());

		localDate = LocalDate.parse("2023-04-04");
		localTime = LocalTime.parse("05:04:03.000000021");
		result = localDate.atTime(localTime);
		System.out.println(result);
		assertEquals("2023-04-04T05:04:03.000000021", result.toString());
	}

	@Test
	public void atTimeWithMinute() {
		LocalDate localDate = LocalDate.of(2023, 4, 4);
		LocalDateTime result = localDate.atTime(5, 4);
		System.out.println(result);
		assertEquals("2023-04-04T05:04", result.toString());

		localDate = LocalDate.parse("2023-04-04");
		result = localDate.atTime(5, 4);
		System.out.println(result);
		assertEquals("2023-04-04T05:04", result.toString());
	}

	@Test
	public void atTimeWithSecond() {
		LocalDate localDate = LocalDate.of(2023, 4, 4);
		LocalDateTime result = localDate.atTime(5, 4, 3);
		System.out.println(result);
		assertEquals("2023-04-04T05:04:03", result.toString());

		localDate = LocalDate.parse("2023-04-04");
		result = localDate.atTime(5, 4, 3);
		System.out.println(result);
		assertEquals("2023-04-04T05:04:03", result.toString());
	}

	@Test
	public void atTimeWithNano() {
		LocalDate localDate = LocalDate.of(2023, 4, 4);
		LocalDateTime result = localDate.atTime(5, 4, 3, 21);
		System.out.println(result);
		assertEquals("2023-04-04T05:04:03.000000021", result.toString());

		localDate = LocalDate.parse("2023-04-04");
		result = localDate.atTime(5, 4, 3, 21);
		System.out.println(result);
		assertEquals("2023-04-04T05:04:03.000000021", result.toString());
	}

	@Test
	public void atTimeWithOffsetTime() {
		LocalDate localDate = LocalDate.of(2023, 4, 4);
		ZoneOffset offset = ZoneOffset.ofHours(11);
		OffsetTime offsetTime = OffsetTime.of(5, 4, 3, 21, offset);
		System.out.println(offsetTime);
		OffsetDateTime offsetDateTime = localDate.atTime(offsetTime);
		LocalDateTime result = offsetDateTime.toLocalDateTime();
		System.out.println(result);
		assertEquals("2023-04-04T05:04:03.000000021", result.toString());

		localDate = LocalDate.parse("2023-04-04");
		offsetDateTime = localDate.atTime(offsetTime);
		result = offsetDateTime.toLocalDateTime();
		System.out.println(result);
		assertEquals("2023-04-04T05:04:03.000000021", result.toString());
	}
}

心得分享

LocalDate to LocalDateTime in Java 將 LocalDate 轉換為 LocalDateTime 實例的方法,簡單來說過程如: LocalDate -> ZonedDateTime -> java.util.LocalDateTime 這些步驟等, Convert LocalDate to LocalDateTime in Java 提供將 LocalDate 實例轉換為 LocalDateTime 實例的方法。

發佈留言