though you are right in what you are saying about joda caching the timezone, I don't think it is the root cause.
Looking at the logs everything is fine until step 4 (actually 5) when the hour is set based on the input provided. It is set to 0 which is what I provided. The problem is that the timezone of the mutable date is not yet set. The timezone should be, as you suggested, be set when the mutable date is created. =========== testDates1() ================= >>> convertDate() 1. dateFieldInput: 1288998000000 Sat Nov 06 00:00:00 CET 2010 2. mutable date: 1288998000000 2010-11-05T19:00:00.000-04:00 3. secs = 0: 1288998000000 2010-11-05T19:00:00.000-04:00 4. AM/PM: 1288998000000 2010-11-05T19:00:00.000-04:00 4. hours: 1288929600000 2010-11-05T00:00:00.000-04:00 -Juergen On Wed, Dec 29, 2010 at 9:40 PM, Attila Király <kiralyattila...@gmail.com> wrote: > Guess I could not send an attached file. I am putting the patch here. Sorry > for the noise. > > ---------------------%<----------------------%<--------------------- > Index: > wicket-datetime/src/test/java/org/apache/wicket/extensions/yui/calendar/DatePickerTest.java > =================================================================== > --- > wicket-datetime/src/test/java/org/apache/wicket/extensions/yui/calendar/DatePickerTest.java > (revision > 1053723) > +++ > wicket-datetime/src/test/java/org/apache/wicket/extensions/yui/calendar/DatePickerTest.java > (working > copy) > @@ -134,6 +134,43 @@ > } > > /** > + * Tests joda & jvm default time zone handling > + */ > + public void testJodaTimeDefaultTimeZone() > + { > + TimeZone origJvmDef = TimeZone.getDefault(); > + DateTimeZone origJodaDef = DateTimeZone.getDefault(); > + > + // lets find a timezone different from current default > + String newId = null; > + for (String id : TimeZone.getAvailableIDs()) > + { > + if (!id.equals(origJvmDef.getID())) > + { > + newId = id; > + break; > + } > + } > + > + assertNotNull(newId); > + > + TimeZone.setDefault(TimeZone.getTimeZone(newId)); > + > + TimeZone newJvmDef = TimeZone.getDefault(); > + DateTimeZone newJodaDef = DateTimeZone.getDefault(); > + > + // if this fails we are under security manager > + // and we have no right to set default timezone > + assertNotSame(origJvmDef, newJvmDef); > + > + // this should be true because joda caches the > + // default timezone and even for the first > + // lookup it uses a System property if possible > + // for more info see org.joda.time.DateTimeZone.getDefault() > + assertSame(origJodaDef, newJodaDef); > + } > + > + /** > * > * @throws ParseException > */ > > ---------------------%<----------------------%<--------------------- > > Attila Király >