kmb
kmb

Reputation: 871

Parsing String to Datestamp doesn't work. Java

I'm trying to parse String in format MMM-dd-yyyy to Timestamp. I'm doing this like below:

String dateto = "Dec-01-2013";
try{
    DateFormat datetoDF = new SimpleDateFormat("MMM-dd-yyyy");
    Date datetoD = (Date)datetoDF.parse(dateto);
    datetoTS = new Timestamp(datetoD.getTime());
}
catch(ParseException e)
{
    log.error("RegisteredUserDataProvider:getFilteredUsers:ParseException: " + e.getMessage());
    String stackTrace = ExceptionUtils.getStackTrace(e);
    log.error(stackTrace);
}

Why it works only with March (for example Mar-01-2013)? When I give any other date with other month I get

java.text.ParseException: Unparseable date: "Dec-01-2013"

I've checked it for set of variables with every month: "Dec-01-2013", "Nov-01-2013", "Oct-01-2013", "Sep-01-2013", "Aug-01-2013", "Jul-01-2013", "Jun-01-2013", "May-01-2013", "Apr-01-2013", "Feb-01-2013", "Jan-01-2013" and "Mar-04-2013". It works only for Mar. Any idea why?

Upvotes: 0

Views: 405

Answers (3)

subodh
subodh

Reputation: 6158

All about Local or you are passing date Dec -01-2013 with space. Provide proper date without space such as Dec-01-2013,and try to print Locale.getDefault() if your default is set something like Korea then definitely you will get this exception then try to use like

DateFormat datetoDF = new SimpleDateFormat("MMM-dd-yyyy",Locale.ENGLISH);

Upvotes: 1

Chakri Chakradhar
Chakri Chakradhar

Reputation: 166

You can use this.

 String dateto = "Dec-01-2013";
 Date datetoD = new SimpleDateFormat("MMMM d, yyyy", Locale.ENGLISH).parse(dateto );
 datetoTS = new Timestamp(datetoD.getTime());

Upvotes: 0

Jayamohan
Jayamohan

Reputation: 12924

Looks like your Default Locale is different.

DateFormat datetoDF = new SimpleDateFormat("MMM-dd-yyyy", Locale.ENGLISH);

Your default Locale may not recognize the words "Jan", "Feb" etc.

Upvotes: 4

Related Questions