Java-8-新特性Java-LocalDate-转-Date
【Java 8 新特性】Java LocalDate 转 Date
Java LocalDate 转 Date
在这一页,我们将提供如何将
java.time.LocalDate
转换成
java.util.Date
。
LocalDate
表示一个格式为
yyyy-MM-dd
的日期,如
2019-05-08
。
我们可以使用以下方法和构造函数来创建一个
Date
对象。
- 1. Date.from(instant)
- 要从
Instant
对象中获取Date
的一个实例。我们可以使用ZonedDateTime
或Timestamp
来获得Instant
。ZonedDateTime
和Timestamp
可以使用LocalDateTime
获得,LocalDateTime
可以使用LocalDate
获得。 - 2. Date(long date)
- 使用构造函数创建
Date
对象并初始化它以表示指定的毫秒数。我们可以使用Timestamp.getTime()
来获得毫秒数的时间。
1. 使用 LocalDate.atTime
LocalDate.atTime
方法将该日期与给定的时间相结合,创建一个
LocalDateTime
。
LocalDateTime.atZone
将这个日期时间与一个时区结合起来,创建一个
ZonedDateTime
。
ZonedDateTime.toInstant
将这个日期时间转换为一个
Instant
。
现在我们将把这个
Instant
实例传递给
Date.from
方法,它将返回一个
java.util.Date
实例。
例:
LocalDate localDate = LocalDate.parse("2019-05-08");
Instant instant = localDate.atTime(LocalTime.MIDNIGHT).atZone(ZoneId.systemDefault()).toInstant();
Date date = Date.from(instant);
System.out.println(date); //Wed May 08 00:00:00 IST 2019
2. 使用 LocalDate.atStartOfDay
例1:
LocalDate.atStartOfDay(zone)
根据时区的规则,返回从该日期开始的最早有效时间的分区日期时间(
time-zone
)。
LocalDate localDate = LocalDate.parse("2019-05-08");
Instant instant = localDate.atStartOfDay(ZoneId.systemDefault()).toInstant();
Date date = Date.from(instant);
System.out.println(date); //Wed May 08 00:00:00 IST 2019
例2:
LocalDate.atStartOfDay()
将这个日期与午夜的时间结合起来,在这个日期的开始创建一个
LocalDateTime
。
LocalDate localDate = LocalDate.parse("2019-05-08");
Instant instant = localDate.atStartOfDay().atZone(ZoneId.systemDefault()).toInstant();
Date date = Date.from(instant);
System.out.println(date); //Wed May 08 00:00:00 IST 2019
3. 使用 LocalDateTime.of
LocalDateTime.of
从一个日期和时间获得一个
LocalDateTime
的实例。
例:
LocalDate localDate = LocalDate.parse("2019-05-08");
Instant instant = LocalDateTime.of(localDate, LocalTime.MIDNIGHT).atZone(ZoneId.systemDefault()).toInstant();
Date date = Date.from(instant);
System.out.println(date); //Wed May 08 00:00:00 IST 2019
4. 使用 Timestamp.valueOf
Timestamp.valueOf(dateTime)
从
LocalDateTime
对象中获得一个
Timestamp
的实例。
例1:
使用
LocalDate.atTime
方法对
LocalDateTime
进行实例化。
LocalDate localDate = LocalDate.parse("2019-05-08");
Instant instant = Timestamp.valueOf(localDate.atTime(LocalTime.MIDNIGHT)).toInstant();
Date date = Date.from(instant);
System.out.println(date); //Wed May 08 00:00:00 IST 2019
例2:
使用
LocalDateTime.of
方法对
LocalDateTime
进行实例化。
LocalDate localDate = LocalDate.parse("2019-05-08");
Instant instant = Timestamp.valueOf(LocalDateTime.of(localDate, LocalTime.MIDNIGHT)).toInstant();
Date date = Date.from(instant);
System.out.println(date); //Wed May 08 00:00:00 IST 2019
例3:
使用
Timestamp.getTime()
方法创建
Date
。
LocalDate localDate = LocalDate.parse("2019-05-08");
Timestamp timestamp = Timestamp.valueOf(localDate.atTime(LocalTime.MIDNIGHT));
Date date = new Date(timestamp.getTime());
System.out.println(date); //Wed May 08 00:00:00 IST 2019
完整示例
LocalDateToDate.java
import java.sql.Timestamp;
import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.ZoneId;
import java.util.Date;
public class LocalDateToDate {
public static void main(String[] args) {
LocalDate localDate = LocalDate.parse("2019-05-08");
Instant instant = localDate.atTime(LocalTime.MIDNIGHT).atZone(ZoneId.systemDefault()).toInstant();
Date date = Date.from(instant);
System.out.println(date);
instant = localDate.atStartOfDay(ZoneId.systemDefault()).toInstant();
date = Date.from(instant);
System.out.println(date);
instant = localDate.atStartOfDay().atZone(ZoneId.systemDefault()).toInstant();
date = Date.from(instant);
System.out.println(date);
instant = LocalDateTime.of(localDate, LocalTime.MIDNIGHT).atZone(ZoneId.systemDefault()).toInstant();
date = Date.from(instant);
System.out.println(date);
instant = Timestamp.valueOf(localDate.atTime(LocalTime.MIDNIGHT)).toInstant();
date = Date.from(instant);
System.out.println(date);
instant = Timestamp.valueOf(LocalDateTime.of(localDate, LocalTime.MIDNIGHT)).toInstant();
date = Date.from(instant);
System.out.println(date);
Timestamp timestamp = Timestamp.valueOf(localDate.atTime(LocalTime.MIDNIGHT));
date = new Date(timestamp.getTime());
System.out.println(date);
}
}
输出
Wed May 08 00:00:00 IST 2019
Wed May 08 00:00:00 IST 2019
Wed May 08 00:00:00 IST 2019
Wed May 08 00:00:00 IST 2019
Wed May 08 00:00:00 IST 2019
Wed May 08 00:00:00 IST 2019
Wed May 08 00:00:00 IST 2019