Java将LocalDate转换为Instant和Timestamp时间戳

x33g5p2x  于2022-09-23 转载在 Java  
字(4.2k)|赞(0)|评价(0)|浏览(756)

在本文中,我们将提供如何将 java.time.LocalDate 转换为 java.time.Instantjava.sql.TimestampLocalDate 表示格式为 yyyy-MM-dd 的日期,例如 2019-05-16。 Instant 是时间线上的一个瞬时点。 Timestamp 是围绕 java.util.Date 的精简包装器,它允许 JDBC API 将其识别为 SQL TIMESTAMP 值。
1. 找到将 LocalDate 转换为 Instant 的示例代码。

LocalDate localDate = LocalDate.parse("2019-05-16");
Instant instant = localDate.atStartOfDay(ZoneId.systemDefault()).toInstant();
System.out.println(instant);//2019-05-15T18:30:00Z

2. 找到将 LocalDate 转换为 Timestamp 的示例代码。

LocalDate localDate = LocalDate.parse("2019-05-16");
Timestamp timestamp = Timestamp.valueOf(localDate.atTime(LocalTime.MIDNIGHT));
System.out.println(timestamp); //2019-05-16 00:00:00.0

在这里,我们将讨论更多将 LocalDate 转换为 InstantTimestamp 的示例。

1. LocalDate 转换为 Instant

要将 LocalDate 转换为 Instant,我们将 LocalDate 转换为 ZonedDateTimeTimestamp,然后调用他们的 toInstant() 方法,我们得到 Instant

1.1 使用 LocalDate.atTime

LocalDate.atTime 方法将此日期与给定时间结合起来创建一个 LocalDateTimeLocalDateTime.atZone 将此日期时间与时区组合以创建 ZonedDateTimeZonedDateTime.toInstant 将此日期时间转换为 Instant
例子

LocalDate localDate = LocalDate.parse("2019-05-16");
Instant instant = localDate.atTime(LocalTime.MIDNIGHT).atZone(ZoneId.systemDefault()).toInstant();
System.out.println(instant); //2019-05-15T18:30:00Z

1.2。使用 LocalDate.atStartOfDay

Example-1LocalDate.atStartOfDay(zone) 根据时区中的规则,在最早有效时间从该日期返回一个分区日期时间。

LocalDate localDate = LocalDate.parse("2019-05-16");
Instant instant = localDate.atStartOfDay(ZoneId.systemDefault()).toInstant();
System.out.println(instant);//2019-05-15T18:30:00Z

示例 2LocalDate.atStartOfDay() 将此日期与午夜时间相结合,以在此日期开始时创建一个 LocalDateTime

LocalDate localDate = LocalDate.parse("2019-05-16");
Instant instant = localDate.atStartOfDay().atZone(ZoneId.systemDefault()).toInstant();
System.out.println(instant); //2019-05-15T18:30:00Z

1.3。使用 LocalDateTime.of

LocalDateTime.of 从日期和时间获取 LocalDateTime 的实例。
例子

LocalDate localDate = LocalDate.parse("2019-05-16");
Instant instant = LocalDateTime.of(localDate, LocalTime.MIDNIGHT).atZone(ZoneId.systemDefault()).toInstant();
System.out.println(instant); //2019-05-15T18:30:00Z

2. LocalDate 转换为Timestamp

Timestamp.valueOf(dateTime)LocalDateTime 对象获取 Timestamp 的实例。

示例 1:使用 LocalDate.atTime 方法实例化 LocalDateTime

LocalDate localDate = LocalDate.parse("2019-05-16");
Timestamp timestamp = Timestamp.valueOf(localDate.atTime(LocalTime.MIDNIGHT));
System.out.println(timestamp); //2019-05-16 00:00:00.0

示例 2:使用 LocalDateTime.of 方法实例化 LocalDateTime

LocalDate localDate = LocalDate.parse("2019-05-16");
Timestamp timestamp = Timestamp.valueOf(LocalDateTime.of(localDate, LocalTime.MIDNIGHT));
System.out.println(timestamp); //2019-05-16 00:00:00.0

3. Timestamp.toInstant

我们可以使用 Timestamp.toInstant() 方法将 Timestamp 转换为 Instant
例子

LocalDate localDate = LocalDate.parse("2019-05-16");
Timestamp timestamp = Timestamp.valueOf(LocalDateTime.of(localDate, LocalTime.MIDNIGHT));
Instant	instant = timestamp.toInstant();
System.out.println(instant); //2019-05-15T18:30:00Z

完整示例

LocalDateDemo.java

package com.concretepage;
import java.sql.Timestamp;
import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.ZoneId;
public class LocalDateDemo {
  public static void main(String[] args) {
	LocalDate localDate = LocalDate.parse("2019-05-16");

	System.out.println("---Instant---");
	Instant instant = localDate.atTime(LocalTime.MIDNIGHT).atZone(ZoneId.systemDefault()).toInstant();
	System.out.println(instant);

	instant = localDate.atStartOfDay(ZoneId.systemDefault()).toInstant();
	System.out.println(instant);

	instant = localDate.atStartOfDay().atZone(ZoneId.systemDefault()).toInstant();
	System.out.println(instant);

	instant = LocalDateTime.of(localDate, LocalTime.MIDNIGHT).atZone(ZoneId.systemDefault()).toInstant();
	System.out.println(instant);
	
	System.out.println("---Timestamp---");
	Timestamp timestamp = Timestamp.valueOf(localDate.atTime(LocalTime.MIDNIGHT));
	System.out.println(timestamp);

	timestamp = Timestamp.valueOf(LocalDateTime.of(localDate, LocalTime.MIDNIGHT));
	System.out.println(timestamp);

	System.out.println("---Timestamp to Instant---");	
	instant = timestamp.toInstant();
	System.out.println(instant);
  }
}

输出

---Instant---
2019-05-15T18:30:00Z
2019-05-15T18:30:00Z
2019-05-15T18:30:00Z
2019-05-15T18:30:00Z
---Timestamp---
2019-05-16 00:00:00.0
2019-05-16 00:00:00.0
---Timestamp to Instant---
2019-05-15T18:30:00Z

相关文章