Issue
I have a String that represents a date in French locale : 09-oct-08 :
I need to parse that String so I came up with this SimpleDateFormat :
String format2 = "dd-MMM-yy";
But I have a problem with the month part, that seems to be expected with a ending dot :
df2.format(new Date());
gives me :
28-oct.-09
What is now the best way for me to make SimpleDateFormat understand ("09-oct-08") ?
Full Code :
String format2 = "dd-MMM-yy";
DateFormat df2 = new SimpleDateFormat(format2,Locale.FRENCH);
date = df2.parse("09-oct-08");
This gives me : java.text.ParseException: Unparseable date: "09-oct-08"
And if I then try to log :
df2.format(new Date());
I get : 28-oct.-09
Solution
This seems to work:
DateFormatSymbols dfsFr = new DateFormatSymbols(Locale.FRENCH);
String[] oldMonths = dfsFr.getShortMonths();
String[] newMonths = new String[oldMonths.length];
for (int i = 0, len = oldMonths.length; i < len; ++ i) {
String oldMonth = oldMonths[i];
if (oldMonth.endsWith(".")) {
newMonths[i] = oldMonth.substring(0, oldMonths[i].length() - 1);
} else {
newMonths[i] = oldMonth;
}
}
dfsFr.setShortMonths(newMonths);
DateFormat dfFr = new SimpleDateFormat(
"dd-MMM-yy", dfsFr);
// English date parser for creating some test data.
DateFormat dfEn = new SimpleDateFormat(
"dd-MMM-yy", Locale.ENGLISH);
System.out.println(dfFr.format(dfEn.parse("10-Oct-09")));
System.out.println(dfFr.format(dfEn.parse("10-May-09")));
System.out.println(dfFr.format(dfEn.parse("10-Feb-09")));
Edit: Looks like St. Shadow beat me to it.
Answered By - Jack Leow
Answer Checked By - Mildred Charles (JavaFixing Admin)