RandomQuestion
RandomQuestion

Reputation: 6998

SimpleDateFormat Exception on setting lenient to false

Why is this code throwing exception of unparseable date?

SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'.000Z'");
f.setLenient(false);
String dateStr = "2012-03-11T02:46:01.000Z";
f.parse(dateStr);

It works fine when lenient is true. It strangely works for input date '2012-03-01T02:46:01.000Z' even with lenient as false. Default timezone being used : PST

Upvotes: 8

Views: 1586

Answers (1)

andrewdotn
andrewdotn

Reputation: 34873

Because that time does not exist in your default time zone—it was daylight savings time change day, and time jumped from 2:00 a.m. to 3:00 a.m., so there was no 2:46 that morning. :P

Since you’re parsing UTC, set the SimpleDateFormat instance time zone to UTC like so:

f.setTimeZone(TimeZone.getTimeZone("UTC"));

and your problem will go away.

Upvotes: 10

Related Questions