I think the fundamental question is what a Date is supposed to represent. I have spent a LOT of time thinking about date and time classes over the last 10 years, and have come to the conclusion that it makes no sense to view a Date as a Timespan.
Let's take an example. Christmas this year is going to be 2017-12-25 in every country that uses the Gregorian calendar and observes Christmas at all. If I ask the question "Is Christmas on the same date in Utah as it is in Otago?" I expect to get the answer YES. But if I ask the question "Is the span of time *called* Christmas day there same as the span of time *called* Christmas day here?" I expect to get the answer NO. It's not entirely unlike the way that '95 Hanover Street' is the same street address in my city as '95 Hanover Street' in Edinburgh, but they correspond to quite different places. (Here: the Urgent Doctors; there: serviced apartments.) Returning to Dates, I expect something like aDate asTimespan: aTimeZone to return a timespan that might be 23, 24, or 25 hours (possibly plus an extra second), with *maybe* aDate asTimespan meaning aDate asTimespan: TimeZone here Naturally the same goes for Weeks, Months, and Years, should they exist.