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
>

Reply via email to