Unparseable date: "30-Jun-12"

date, java

Solution

There are 2 problems:

- Your date format pattern is wrong. The `yyyy-MM-dd hh:mm:ss.S` can never match `30-Jun-12`. You need `dd-MMM-yy`. See also `SimpleDateFormat` javadoc.

- When parsing day/month names, make sure that you specify the right locale matching the language used in the day/month names. Your system default locale seems to be not English at all.

So this should do:

SimpleDateFormat sdf = new SimpleDateFormat("dd-MMM-yy", Locale.ENGLISH);
Date date = sdf.parse("30-Jun-12");

A third problem, which is actually more a design matter, you should not be using `java.sql.Timestamp` (and other SQL specific date types) anywhere in your model/business layer (you originally tagged the question JSF). You should only use it in your data layer. Use `java.util.Date` instead and convert only at exactly the moment you need to persist it in the DB like so

preparedStatement.setTimestamp(1, new Timestamp(date.getTime()));

Problem

I'm using a Java method to convert the date into suitable format: ``` private Timestamp toTimeStamp(String s) throws java.text.ParseException { Timestamp ts = null; java.util.Date date = null; if (s == null || s.trim().isEmpty()) return ts; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.S"); date = (java.util.Date) sdf.parse(s); ts = new Timestamp(date.getTime()); return ts; } ``` When I tried to execute the form I get this error: ``` Unparseable date: "30-Jun-12" ``` I tried to change the the date format but I still get this error. Can you help me to fix it?

Original source