Java 8 – Convert Instant to LocalDateTime
Java 8 examples to show you how to convert from Instant
to LocalDateTime
1. Instant -> LocalDateTime
The java.time.LocalDateTime
has no concept of time zone, just provide a zero offset UTC+0.
InstantExample1.java
package com.mkyong.date;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
public class InstantExample1 {
public static void main(String[] argv) {
// Parse a ISO 8601 Date directly
//Instant instant = Instant.parse("2016-08-18T06:17:10.225Z");
Instant instant = Instant.now();
System.out.println("Instant : " + instant);
//Convert instant to LocalDateTime, no timezone, add a zero offset / UTC+0
LocalDateTime ldt = LocalDateTime.ofInstant(instant, ZoneOffset.UTC);
System.out.println("LocalDateTime : " + ldt);
}
}
Output
Instant : 2016-08-18T06:17:10.225Z
LocalDateTime : 2016-08-18T06:17:10.225
2. LocalDateTime -> Instant
InstantExample2.java
package com.mkyong.date;
import java.time.*;
public class InstantExample2 {
public static void main(String[] argv) {
// Hard code a date time
LocalDateTime dateTime = LocalDateTime.of(2016, Month.AUGUST, 18, 6, 17, 10);
System.out.println("LocalDateTime : " + dateTime);
// Convert LocalDateTime to Instant, UTC+0
Instant instant = dateTime.toInstant(ZoneOffset.UTC);
System.out.println("Instant : " + instant);
}
}
Output
Instant : 2016-08-18T06:17:10.225Z
LocalDateTime : 2016-08-18T06:17:10.225
The code is correct if you want the result to be in UTC.
If you want the result to be in your local timezone then instead of ZoneOffset.UTC you want to use ZoneId.systemDefault().