I'm trying to parse date in ISO8601 format:
yyyy-MM-dd'T'HH:mm:ss.SSSZ
Am I correct that it is not possible to parse it with any of the default formats defined in java.time.format.DateTimeFormatter?
For example ISO_OFFSET_DATE_TIME will parse only:
yyyy-MM-dd'T'HH:mm:ss.SSSZZ
Samples:
yyyy-MM-dd'T'HH:mm:ss.SSSZ
2015-04-29T10:15:00.500+0000
yyyy-MM-dd'T'HH:mm:ss.SSSZZ
2015-04-29T10:15:00.500+00:00
BTW:I know I can define my own formatter that is not the issue. Just wanted to ensure that I'm not missing something as the ISODateTimeFormat of Joda is able to parse both:
org.joda.time.format.DateTimeFormatter dateTimeFormatter = ISODateTimeFormat.dateTime();
DateTime dateTime = dateTimeFormatter.parseDateTime("2015-04-29T10:15:00.500+0000");
I am not sure this is your expected answer.
Method 1
Parse using Instant
Instant.parse("2015-06-28T10:13:14.743Z");
Method 2
The given input format is equivalent to ISO_DATE_TIME format after removing 'Z' from the given pattern yyyy-MM-dd'T'HH:mm:ss.SSSZ
Then we can parse it using ISO_DATE_TIME
text = "2015-06-28T10:13:14.743"
LocalDateTime.parse(text,DateTimeFormatter.ISO_DATE_TIME)
You should never be bothered by those annoying date-format.
There has an new library dateparser.
It can recognize any String automatically, and parse it into Date, Calendar, LocalDateTime, OffsetDateTime correctly.
With it, you don't have to prepare any appropriate patterns like yyyy-MM-dd'T'HH:mm:ss.SSSZ
or yyyy-MM-dd'T'HH:mm:ss.SSSZZ
:
Date date = DateParserUtils.parseDate("2015-04-29T10:15:00.500+0000");
Calendar calendar = DateParserUtils.parseCalendar("2015-04-29T10:15:00.500Z");
LocalDateTime dateTime = DateParserUtils.parseDateTime("2015-04-29 10:15:00.500 +00:00");
All works fine, please enjoy it.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With