Dates and timezones are hard. I wrote a very early timezone library for JavaScript (
https://github.com/mde/timezone-js, still active), and set of date utilities (now in our utilities lib:
https://github.com/mde/utilities/blob/master/lib/date.js) and it still confuses the shit out of me.
There are some unit-tests for the date datatype, but since they are unit tests they don't make a serialize/deserialize round-trip. Maybe the right place for this sort of test would be the shared adapter tests, so we could ensure that we actually get the round-trip behavior right, and never regress it. (I know that updating the pg module right now breaks dates.)
Do you think UTC should be on by default?