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