Java程序将日期转换为LocalDate,LocalDateTime
时间:2020-01-09 10:35:32 来源:igfitidea点击:
在本文中,我们将看到Java程序将Date转换为LocalDate,将Date转换为LocalTime并将Date转换为LocalDateTime。
java.util.Date以协调世界时(UTC)表示日期和时间。在Java 8中可用的新的Date and Time API中,存在以下三个用于表示日期和时间的类。
- LocalDate表示没有时区的日期。
- LocalTime表示没有时区的时间。
- LocalDateTime表示不带时区的日期时间。
将日期转换为LocalDate,LocalTime,LocalDateTime
将日期转换为LocalDate,LocalTime或者LocalDateTime的步骤如下。
1.由于java.util.Date类表示特定时间点,因此第一件事就是将其转换为java.time.Instant。
2.使用Instant类的atZone(ZoneId zone)方法,可以将此瞬时值与时区组合以创建ZonedDateTime。
3.一旦有了ZonedDateTime实例,就可以使用toLocalDate(),toLocalTime()和toLocalDateTime()方法分别获取LocalDate,LocalTime和LocalDateTime。
import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.util.Date;
public class ConvertDate {
public static void main(String[] args) {
Date date = new Date();
System.out.println("Date- " + date);
//Convert Date to Instant
Instant instant = date.toInstant();
//Combine with time-zone
ZonedDateTime zdt = instant.atZone(ZoneId.systemDefault());
//ZonedDateTime
System.out.println("ZonedDateTime- " + zdt);
//Get the localdate part
LocalDate ld = zdt.toLocalDate();
System.out.println("LocalDate- " + ld);
//Get the LocalTime
LocalTime lt = date.toInstant().atZone(ZoneId.systemDefault()).toLocalTime();
System.out.println("LocalTime- " + lt);
//Get the LocalDateTime
LocalDateTime ldt = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
System.out.println("LocalDateTime- " + ldt);
}
}
输出:
Date- Sat Nov 02 19:11:31 IST 2019 ZonedDateTime- 2019-11-02T19:11:31.832+05:30[Asia/Calcutta] LocalDate- 2019-11-02 LocalTime- 19:11:31.832 LocalDateTime- 2019-11-02T19:11:31.832

