J. Doem
J. Doem

Reputation: 649

Java 8 DateTimeFormatter to ignore millisecond and zone

I am struggling with Java 8 DateTimeFormatter.

I would like to convert a given String to dateFormat and parse to LocalDateTime

Here is my code

DateTimeFormatter f = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss")
String text = "2020-01-01T01:01:11.123Z"
LocalDateTime date = LocalDateTime.parse(text, f)

But Java throws

Text could not be parsed, unparsed text found at index 19

If I change ofPattern to yyyy-MM-dd'T'HH:mm:ss.SSSX, my code executes without any error. But I don’t want to use millisecond and time zone.

Upvotes: 14

Views: 9354

Answers (1)

smac89
smac89

Reputation: 43088

Do this instead:

String text = "2020-01-01T01:01:11.123Z";
LocalDateTime date = ZonedDateTime.parse(text)
                                  .toLocalDateTime();

To get rid of the milliseconds information, do:

LocalDateTime date = ZonedDateTime.parse(text)
                                  .truncatedTo(ChronoUnit.SECONDS)
                                  .toLocalDateTime();

You can also use OffsetDateTime in place of ZonedDateTime.

Upvotes: 13

Related Questions