I want to set up joda DateTime to today at 2 AM (see sample code below). But I’m getting this exception:
Exception in thread "main" org.joda.time.IllegalFieldValueException: Value 2 for hourOfDay is not supported: Illegal instant due to time zone offset transition: 2011-03-27T02:52:05.239 (Europe/Prague)
at org.joda.time.chrono.ZonedChronology$ZonedDateTimeField.set(ZonedChronology.java:469)
at org.joda.time.MutableDateTime.setHourOfDay(MutableDateTime.java:702)
What is the correct way to the handle exception above or to create a DateTime at a particular hour of day?
Sample code:
MutableDateTime now = new MutableDateTime();
now.setHourOfDay(2);
now.setMinuteOfHour(0);
now.setSecondOfMinute(0);
now.setMillisOfSecond(0);
DateTime myDate = now.toDateTime();
Thanks.
It seems like you’re trying to get from a specific local time to a
DateTimeinstance and you want that to be robust against daylight savings. Try this… (note I’m in US/Eastern, so our transition date was 13 Mar 11; I had to find the right date to get the exception you got today. Updated my code below for CET, which transitions today.) The insight here is that Joda providesLocalDateTimeto let you reason about a local wall-clock setting and whether it’s legal in your timezone or not. In this case, I just add an hour if the time doesn’t exist (your application has to decide if this is the right policy.)This code produces: