Friday, 2 February 2018

java - Parsing from String to Date throws Unparsable Date Error



I have an variable called data, and it has today's date as in this format: Thu May 24 13:14:41 BRT 2018. Then I format it to MySQL's Date type format, which is yyyy-MM-dd. This code does it:



String dataFormatada = new SimpleDateFormat("yyyy-MM-dd").format(data);



What I want to do is to bring it back to Date type. I've tried somethings but they didn't work. The main solution is to do as discribed in this other questioin, and with a little mod I got to what's suposely what I want:



String target = "Thu Sep 28 20:29:30 JST 2000";
DateFormat df = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
Date result = df.parse(target);
System.out.println(result);


But it doesn't work as I get this error when trying to parse:




java.text.ParseException: Unparseable date: "Thu Sep 28 20:29:30 JST 2000"


So I cannot just reformat the data variable, and I cannot bring dataFormatada back to Date format. How do I bring dataFormatada to Date type formatted as yyyy-MM-dd?


Answer



Your target String format is in EEE MMM dd HH:mm:ss zzz yyyy format. So you need to use EEE MMM dd HH:mm:ss zzz yyyy as pattern instead of yyyy-MM-dd.



    String target = "Thu Sep 28 20:29:30 JST 2000";
DateFormat df = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.ENGLISH);
Date result = df.parse(target);

System.out.println(result);


And if you want convert Date object i.e result to yyyy-MM-dd then please use the below code.



    DateFormat dfDateToStr = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
String formattedDate = dfDateToStr.format(result);
System.out.println("Formatted Date String : "+formattedDate);

No comments:

Post a Comment

casting - Why wasn't Tobey Maguire in The Amazing Spider-Man? - Movies & TV

In the Spider-Man franchise, Tobey Maguire is an outstanding performer as a Spider-Man and also reprised his role in the sequels Spider-Man...