在本文中,我们将提供如何将 java.time.LocalDate
转换为 java.time.Instant
和 java.sql.Timestamp
。 LocalDate
表示格式为 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
转换为 Instant
和 Timestamp
的示例。
要将 LocalDate
转换为 Instant
,我们将 LocalDate
转换为 ZonedDateTime
或 Timestamp
,然后调用他们的 toInstant()
方法,我们得到 Instant
。
LocalDate.atTime
方法将此日期与给定时间结合起来创建一个 LocalDateTime
。 LocalDateTime.atZone
将此日期时间与时区组合以创建 ZonedDateTime
。 ZonedDateTime.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
Example-1:LocalDate.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
示例 2:LocalDate.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
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
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
我们可以使用 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
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://www.concretepage.com/java/java-8/java-localdate-to-instant-timestamp
内容来源于网络,如有侵权,请联系作者删除!