将Instant转换为Java LocalDateTime,LocalTime
时间:2020-01-09 10:35:42  来源:igfitidea点击:
在这篇文章中,我们将看到Java程序将java.time.Instant转换为LocalDate,LocalTime和LocalDateTime。
1.即时消息提供UTC(世界标准时间)的即时时间点,因此将其转换为LocalDate,LocalDateTime涉及将即时数据转换为
- 通过指定使用的ZoneID来设置ZonedDateTime。
- 通过指定使用的ZoneOffset来设置OffsetDateTime。
一旦有了ZonedDateTime或者OffsetDateTime的实例,就可以分别使用方法toLocalDate(),toLocalTime()和toLocalDateTime()来获取LocalDate,LocalTime或者LocalDateTime。
2.另一种方法是在LocalDate,LocalTime,LocalDateTime类中使用ofInstant()静态方法进行转换。
使用ZonedDateTime即时到LocalDate,LocalDateTime
public class InsantExample {
  public static void main(String[] args) {
    Instant instant = Instant.parse("2019-10-20T02:35:15.245Z");
    System.out.println("Instant- " + instant);
    // Getting ZonedDateTime
    ZonedDateTime zdt = instant.atZone(ZoneId.of("Europe/Paris"));
    System.out.println("ZonedDateTime- " + zdt);
    // Getting LocalDate
    System.out.println("LocalDate- " + zdt.toLocalDate());		
    System.out.println("LocalTime- " + zdt.toLocalTime());		
    System.out.println("LocalDateTime- " + zdt.toLocalDateTime());
  }
}
输出:
Instant- 2019-10-20T02:35:15.245Z ZonedDateTime- 2019-10-20T04:35:15.245+02:00[Europe/Paris] LocalDate- 2019-10-20 LocalTime- 04:35:15.245 LocalDateTime- 2019-10-20T04:35:15.245
使用OffsetDateTime即时到LocalTime,LocalDateTime
public class InsantExample {
  public static void main(String[] args) {
    Instant instant = Instant.parse("2019-10-20T02:35:15.245Z");
    System.out.println("Instant- " + instant);
    // Getting OffsetDateTime by specifying offset
    OffsetDateTime odt = instant.atOffset(ZoneOffset.of("+02:00"));
    System.out.println("OffsetDateTime- " + odt);
    // Getting LocalDate
    System.out.println("LocalDate- " + odt.toLocalDate());		
    System.out.println("LocalTime- " + odt.toLocalTime());		
    System.out.println("LocalDateTime- " + odt.toLocalDateTime());
  }
}
输出:
Instant- 2019-10-20T02:35:15.245Z OffsetDateTime- 2019-10-20T04:35:15.245+02:00 LocalDate- 2019-10-20 LocalTime- 04:35:15.245 LocalDateTime- 2019-10-20T04:35:15.245
使用ofInstant()方法
对于LocalDate
Instant instant = Instant.parse("2019-10-20T02:35:15.245Z");
System.out.println("Instant- " + instant);
LocalDate ld = LocalDate.ofInstant(instant, ZoneId.of("Asia/Kolkata"));
System.out.println("LocalDate- " + ld);
输出:
Instant- 2019-10-20T02:35:15.245Z LocalDate- 2019-10-20
对于本地时间
Instant instant = Instant.parse("2019-10-20T02:35:15.245Z");
System.out.println("Instant- " + instant);
LocalTime lt = LocalTime.ofInstant(instant, ZoneId.of("Asia/Kolkata"));
System.out.println("LocalTime- " + lt);
输出:
Instant- 2019-10-20T02:35:15.245Z LocalTime- 08:05:15.245
对于LocalDateTime
Instant instant = Instant.parse("2019-10-20T02:35:15.245Z");
System.out.println("Instant- " + instant);
LocalDateTime ldt = LocalDateTime.ofInstant(instant, ZoneId.of("Asia/Kolkata"));
System.out.println("LocalDateTime- " + ldt);
输出:
Instant- 2019-10-20T02:35:15.245Z LocalDateTime- 2019-10-20T08:05:15.245

