> We have very rich libraries for dealing with time in software
99.9% of which suck goats though.
And then, there's the problem of correctly syncing time display with internal representation: let's say the library stores time as a monotonically increasing number (which it should, ideally, that's the first failure of many libraries). This monotonically increasing number is then mapped onto "human" dates and times via more or less complex schemes.
The problem is that those mapping change over time, for instance the leap second is provided with 6 months of advance, DST/GST changes may be provided with far less (to say nothing of timezone changes). So those time libraries need to be updated all the bloody time or to have a mechanism through which they download mapping updates.
> conversely and perhaps more dangerous, should "14:00 30 June" + 24 hours come out as 13:59:59 or 14:00:00?
Well this is a human time mapping, in human time mappings the leap second is part of one of those 24h, so it'd be 14:00:00 (same as adding "1 day" or "1440 minutes"), whereas adding 86400 seconds would yield 13:59:59.
The internal storage should not have a concept of hours (or minutes, or even maybe seconds), it would have its "time unit" and then contextual mappings from the time unit to "human units" through calendars and calendar operations.