I've given up on the native Date/Time stuff in favour for Joda Time (http://joda-time.sourceforge.net/)
You cannot work reliably with dates and times, period. Even using the right software doesn't save you from a representation that sucks. Every spring in most places there are time values that don't exist. Every fall there are time values that are ambiguous and happen twice. Every year a bunch of governments change their time zone definitions and muck up a bunch of stored "future" times.
Do your work with "time" as a numeric quantity on a number line and convert to (never from) human-readable dates on output. If you need to parse a date, ever, you are doommed.