Table of Contents
ToggleJava 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 實例的方法。