Date and Time in Java is always a pain.
Here’s how to parse time and date strings in the ISO-8601 format.
ISO-8601 time example: “2018-07-06T17:58:39.451Z”
The trick is that you need to parse that ISO-8601 string into java.time.Instant
String dateTimeString = "2018-07-06T17:58:39.451Z";
Instant instant = Instant.parse(dateTimeString);
You can compare two instants
assertTrue(Instant.parse("2018-07-06T17:58:39.451Z").isBefore(Instant.parse("2019-07-06T17:58:39.451Z")));
or get Epoch milliseconds/seconds
long millis = instant.toEpochMilli();
long seconds = instant.getEpochSecond();
assertEquals(millis / 1000, seconds);
or get ISO-8601 time as Date
Date date = Date.from(Instant.parse("2018-07-06T17:58:39.451Z"));