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:
- Parsing the input date using the pattern
yyyy-MM-dd
- 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);