Reputation: 20889
Maybe i'm just missing the obvious, but I can't get SimpleDateTime
s parse()
method to work:
I want to parse dates like June 19, 2011
. So, according to the documentation: http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html
for my needs it should be:
M
: Month in year. If the number of pattern letters is 3 or more, the month is interpreted as text; --> MMM
d
: Day in month. For parsing, the number of pattern letters is ignored unless it's needed to separate two adjacent fields --> d
y
: Year. For parsing, if the number of pattern letters is more than 2, the year is interpreted literally, regardless of the number of digits. --> yyyy
but with
SimpleDateFormat sdf = new SimpleDateFormat("MMM d, yyyy");
Date d = sdf.parse("June 19, 2011");
I'll always get java.text.ParseException: Unparseable date: "June 19, 2011"
Where am I thinking wrong? :)
Upvotes: 0
Views: 534
Reputation: 338181
Here is an example akin to the correct answer but using the Joda-Time library.
Both Joda-Time and the java.time package are far superior to the old java.util.Date an .Calendar classes bundled with Java. One of many advantages is a class, LocalDate
, to represent date-only values without time-of-day or time zone.
DateTimeFormatter formatter = DateTimeFormat.forPattern( "MMM, d, YYYY" ).withLocale( Locale.ENGLISH );
LocalDate localDate = formatter.parseLocalDate( "June 19, 2011" );
Upvotes: 0
Reputation: 279880
I'm assuming your Locale
is some German value since you seem to be in Germany. June
won't parse as a German word for a month. Set your Locale
to an English value.
SimpleDateFormat sdf = new SimpleDateFormat("MMM d, yyyy", Locale.ENGLISH);
Upvotes: 3