I would like to parse a date. My String date is "Thu Jan 19 2012 08:00 PM". And my code to parse is:
format = new SimpleDateFormat("EEE MMM dd yyyy hh:mm aaa");
this.settDate(new Timestamp((format.parse(sDate)).getTime()));
However, it does not work. How could I parse this date?
Complete method is:
public void saveTask(int iDevice, String description, String sDate) throws ParseException {
format = new SimpleDateFormat("EEE MMM dd yyyy hh:mm aaa");
this.setiDeviceId(iDevice);
this.setsDescription(description);
this.settDate(new Timestamp((format.parse(sDate)).getTime()));
DatabaseManager.save(this);
}
And exception:
java.text.ParseException: Unparseable date: "Thu Jan 19 2012 01:00 AM"
Debug picture:
Thanks!
Try below code... Tested and worked
String dateStr = "Thu Jan 19 2012 01:00 PM";
DateFormat readFormat = new SimpleDateFormat( "EEE MMM dd yyyy hh:mm aaa");
DateFormat writeFormat = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss");
Date date = null;
try {
date = readFormat.parse( dateStr );
} catch ( ParseException e ) {
e.printStackTrace();
}
String formattedDate = "";
if( date != null ) {
formattedDate = writeFormat.format( date );
}
System.out.println(formattedDate);
Output is 2012-01-19 13:00:00
Cheers!!! Happy to help!!!
Try setting a Locale such as US in this case:
SimpleDateFormat format = new SimpleDateFormat("EEE MMM dd yyyy hh:mm aaa",Locale.US);
format.parse("Thu Jan 19 2012 08:00 PM");
What is your default locale? Since the date string is in English, try parsing it with the US locale:
DateFormat format = new SimpleDateFormat("EEE MMM dd yyyy hh:mm a", Locale.US);
Make sure that value really got to that call. Put a breakpoint right on that line and double check actual value.
As you can see here http://ideone.com/MBzYn code works perfectly.
// make sure your string date and DateFormat pattern are same;
// for example you have String date="2018/07/10 10:00:00";
DateFormat format = new SimpleDateFormat( "yyyy/MM/dd HH:mm:ss");
// now makesure format has same pattern in this case ""yyyy/MM/dd HH:mm:ss"