> So the current behavior of two equal dates being considered not-equal is
> as jarring as your counter example of two non-equal dates (different
> timezone) being considered equal.

Indeed!
 

There doesn't seem to be an easy, direct solution because I'm assuming we
don't have a primitive for "the offset at this location on X date in the
past". So the next best thing might be a PlatonicDate (obviously a
name-in-progress :)) that represents the abstract idea of a Date without
regard to location, and then an object to connect a particular place/offset
to that concept (but the second one would have the same problem as we
currently have).

Well, for me at least, the solution we chose for Squeak has been working well.  Here's the main discussion:

  http://lists.squeakfoundation.org/pipermail/squeak-dev/2012-February/162872.html