This has nothing to do with time zones. The issue was that the
hash_to_calendar() and calendar_to_hash() methods of
Java::JCR::JavaUtils were incorrectly using java.util.Calendar.HOUR when
they should have been using java.util.Calendar.HOUR_OF_DAY.
From the JavaDoc:
public static final int HOUR
Field number for get and set indicating the hour of the morning or
afternoon. HOUR is used for the 12-hour clock (0 - 11). Noon and
midnight are represented by 0, not by 12. E.g., at 10:04:15.250 PM the
HOUR is 10.
public static final int HOUR_OF_DAY
Field number for get and set indicating the hour of the day.
HOUR_OF_DAY is used for the 24-hour clock. E.g., at 10:04:15.250 PM the
HOUR_OF_DAY is 22.
Oops. This should be fixed with the 0.07 release.