pixylife
pixylife

Reputation: 483

String Date Value Converting

I am converting String to Date format. But it returns "Unparseable date". for example,

String date= "Wednesday, May 15, 2013";

I want to convert this to String like "2013-05-15" How to do that?

Upvotes: 2

Views: 389

Answers (4)

Zhenyi Luo
Zhenyi Luo

Reputation: 61

Something like this:

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class StringDate {
    public static void main(String[] args) throws ParseException{
        String dateString  = "Wednesday, May 15, 2013";
        DateFormat format1 = new SimpleDateFormat("E, MMM dd, yyyy"); 
        Date date = format1.parse(dateString);
        DateFormat format2 = new SimpleDateFormat("yyyy-MM-dd"); 
        String updatedDateString = format2.format(date);
        System.out.println("Updated Date > "+updatedDateString);
    }
}

Upvotes: 0

Scott Shipp
Scott Shipp

Reputation: 2321

In my experiments with this, you need to do something like the below...Refer to the API for understanding how to construct your format strings. http://docs.oracle.com/javase/6/docs/api/index.html?java/text/DateFormat.html

String myDateAsString = "Wednesday, May 15, 2013";
SimpleDateFormat df = new SimpleDateFormat("EEEE, MMM d, yyyy");
Date d = new Date();
try {
    d = df.parse(myDateAsString);
} catch (ParseException e1) {
    System.out.println("Could not parse...something wrong....");
    e1.printStackTrace();
}
df.applyPattern("yyyy-MM-d");
String convertedDate = df.format(d);
System.out.println(convertedDate);

This will be a good approach.

Upvotes: 0

Bohemian
Bohemian

Reputation: 425438

Use SimpleDateFormat twice: Once to parse a Date, the other to render it in the desired format:

Date date;
String display = new SimpleDateFormat("yyyy-MM-dd").format(
        new SimpleDateFormat("EEEE, MMMM dd, yyyy").parse(date)
    );

Your example date is unfortunate, because it uses the only 3-letter month "May", so I can't tell if your month names are all truncated to 3 letters, or if they are the full name. I have assumed months to be the full name, but if they are truncated, change MMMM to MMM in the second format string.

Upvotes: 6

Yogendra Singh
Yogendra Singh

Reputation: 34397

Something like this might help (parse the date string to date object and format it back in the new format):

    String dateString  = "Wednesday, May 15, 2013";
    DateFormat format1 = new SimpleDateFormat("EEEE, MMMM dd, yyyy"); 
    Date date = format1.parse(dateString);

    DateFormat format2 = new SimpleDateFormat("yyyy-MM-dd"); 
    String updatedDateString = format2.format(date);
    System.out.println("Updated Date > "+updatedDateString);

Upvotes: 2

Related Questions