📅  最后修改于: 2023-12-03 15:23:24.353000             🧑  作者: Mango
在Java中,我们有时需要将 java.util.Date 转换成 java.time.LocalDate。以下是几种不同方法:
Java 8引入了Instant和ZoneId来处理日期和时间的新API。可以使用这两个类将 java.util.Date 转换成java.time.LocalDate:
import java.time.Instant;
import java.time.LocalDate;
import java.time.ZoneId;
import java.util.Date;
public class DateToLocalDate1 {
public static void main(String[] args) {
Date date = new Date();
Instant instant = date.toInstant();
LocalDate localDate = instant.atZone(ZoneId.systemDefault()).toLocalDate();
System.out.println("Date: " + date);
System.out.println("LocalDate: " + localDate);
}
}
此方法使用 date.toInstant() 将 Java.util.Date 转换为 java.time.Instant,然后使用 Instant.atZone() 方法将它转换成 java.time.ZonedDateTime 对象。 atZone()
方法的参数是一个 java.time.ZoneId 对象,它使用系统默认的时区。最后,我们将 ZonedDateTime 对象转换成 java.time.LocalDate 对象,这是我们需要的结果。
还可以使用java.util.Calendar类将日期从时间戳转换成LocalDate:
import java.time.LocalDate;
import java.util.Calendar;
import java.util.Date;
public class DateToLocalDate2 {
public static void main(String[] args) {
Date date = new Date();
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
LocalDate localDate = calendar.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
System.out.println("Date: " + date);
System.out.println("LocalDate: " + localDate);
}
}
此方法使用 Calendar.toInstant() 将 java.util.Calendar 对象转换成 java.time.Instant 对象,然后再将其转换成 java.time.LocalDate 对象。
还有一种方法是使用 SimpleDateFormat 类来将 java.util.Date 转换成 java.time.LocalDate:
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Date;
public class DateToLocalDate3 {
public static void main(String[] args) {
Date date = new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate localDate = LocalDate.parse(dateFormat.format(date), dateTimeFormatter);
System.out.println("Date: " + date);
System.out.println("LocalDate: " + localDate);
}
}
此方法使用 SimpleDateFormat 类将 java.util.Date 对象格式化为 yyyy-MM-dd 日期字符串(使用 dateFormat.format(date) 方法),然后将其解析为 java.time.LocalDate 对象(使用 LocalDate.parse() 方法)。我们还需要使用 DateTimeFormatter 类定义日期字符串格式。
以上就是将 java.util.Date 转换成 java.time.LocalDate 的几种方法。