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