Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Parsing LocalDate but getting DateTimeParseException; dd-MMM-uuuu

I am trying to convert a String to LocalDate using DateTimeFormatter, but I receive an exception:

java.time.format.DateTimeParseException: Text '2021-10-31' could not be parsed at index 5

My code is

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MMM-uuuu");
String text = "2021-10-31";
LocalDate date = LocalDate.parse(text, formatter);

I am trying to convert from input date 2021-10-31 to 31-Oct-2021.

like image 885
Arooshi Avatar asked Dec 23 '22 15:12

Arooshi


1 Answers

Whats wrong?

What Am I doing wrong in my code.

Your code specifies the pattern dd-MMM-uuuu, but you attempt to parse the text 2021-10-31 which does not fit this pattern at all.

The correct pattern for your string would be yyyy-MM-dd. See the documentation of the formatter for details.

In particular, watch the order of the days and months dd-MMM vs MM-dd. And the amount of months MMM. A string matching your current pattern would be 31-Oct-2021.


Change pattern

From the comments:

my input date is - 2021-10-31 need to covert into - 31-Oct-2021

You can easily change the pattern of the date by:

  1. Parsing the input date using the pattern yyyy-MM-dd
  2. and then format it back to string using the pattern dd-MMM-yyyy.

In code, that is:

DateTimeFormatter inputPattern = DateTimeFormatter.ofPattern("yyyy-MM-dd");
DateTimeFormatter outputPattern = DateTimeFormatter.ofPattern("dd-MMM-yyyy");

String input = "2021-10-31";
LocalDate date = LocalDate.parse(text, inputPattern);

String output = date.format(outputPattern);
like image 198
Zabuzard Avatar answered Mar 30 '23 00:03

Zabuzard