大家好,如果你想学习如何在Java 8中把旧的Date转换成新的LocalDate,那么你就来对地方了。在这篇文章中,我将教你如何在Java中把Date转换为LocalDate。你可能知道JDK 8引入了新的日期和时间API,它有一套新的闪亮的日期类,如LocalDate、LocalTime等,但你仍然有很多针对java.util.Date编写的代码?为了处理这些代码,你应该知道如何在Java中把java.util.Date转换为java.util.LocalDate。
实际上有多种方法可以进行这种转换。例如,你也可以在这里使用java.sql.Date类,因为它提供了toLocalDate()和toInstant()等直接转换方法。
另一件重要的事情是,Java 8中java.util.Date的对应类是Instant,而不是LocalDate。
如何在Java 8中把Date转换成LocalDate?例子
尽管它的名字是java.util.Date,但它代表了时间线上的一个瞬间,而不是一个 "日期"。该对象中存储的实际数据是自1970-01-01T00:00Z(1970年GMT/UTC开始的午夜)以来的毫秒计数。
JSR-310中与java.util.Date相当的类是Instant,因此有一个类似toInstant() 的方便方法来提供转换。
Date input = new Date()
Instant instant = input.toInstant()
java.util.Date实例没有时区的概念。如果你在java.util.Date上调用toString(),这可能看起来很奇怪,因为toString是相对于时区的。然而,该方法实际上是使用Java的默认时区来提供字符串。时区不是java.util.Date的实际状态的一部分。
一个Instant也不包含任何关于时区的信息。因此,要想从Instant转换为本地日期,就必须指定一个时区。这可能是默认的时区--ZoneId.systemDefault(),也可能是你的应用程序控制的时区,例如来自用户偏好的时区。使用atZone()方法来应用该时区。
Date input = new Date()
一个 ZonedDateTime包含一个由本地日期和时间、时区和GMT/UTC的偏移量组成的状态。因此,使用toLocalDate() 可以很容易地提取出日期--LocalDate。
在Java 8中把日期转换成本地日期的Java程序
不用再浪费你的时间了,这里有一个完整的程序,在Java 8中 把Date对象转换成LocalDate实例。
package test;
import java.time.Instant;
import java.time.LocalDate;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.util.Date;
/\*\*
\* Java Program to show how to convert java.util.Date and LocalDate in Java 8.
\* There are multiple ways to convert Date to LocateDate, as we see in this
\* article.
\*
\* @author Javin
\*/
public class Test {
public static void main(String args\[\]) {
// Easiest way is by using java.sql.Date which is modified in Java 8
// and contains direct conversion method with new Date and Time
// classes e.g. toLocalDate() and toLocalTime()
Date date \= new java.util.Date();
LocalDate localDate \= new java.sql.Date(date.getTime()).toLocalDate();
System.out.println("1st way to convert Date to LocalDate in Java 8 : "
+ localDate);
// By using Instant class op Java 8
Date currentDate \= new Date();
Instant currentInstant \= currentDate.toInstant();
ZonedDateTime zdt \= currentInstant.atZone(ZoneId.systemDefault());
LocalDate lDate \= zdt.toLocalDate();
System.out.println("2nd way to convert Date to LocalDate in Java 8 : "
+ lDate);
}
}
Output:
1st way to convert Date to LocalDate in Java 8 : 2015\-01\-27
2nd way to convert Date to LocalDate in Java 8 : 2015\-01\-27
以上就是关于如何在Java 8中把Date转换为LocalDate的全部内容。在这个例子中,我向你展示了在Java中把给定的Date转换成LocalDate的两种方法,一种是使用java.sql.Date,另一种是使用Java time API中的Instant类。你可以使用其中任何一种方法在Java 8中把Date转换为LocalDate。
感谢你阅读本文至今,如果你喜欢这个Java日期和时间教程,那么请与你的朋友和同事分享它。如果您有任何问题或反馈,请留言。
