I’d say it’s still mostly a software issue, just one with more difficult tradeoffs. A 32-bit number of seconds can only represent a range of 136.1 years, but while those 32-bit numbers may exist in a lot of places (filesystem, protocols, PRAM) their interpretation is up to software.
It might be possible to write an extension that patches Apple’s date utilities to assign a different 136.1-year range to those bits than 1904–2040:
- You could move it half the range forward, to 1972–2108. Dates from 1972–2040 would be preserved, but you’d lose dates before 1972 (probably fine) and some software would think 2040–2108 < 1972–2040.
- You could shift it 100 years, to 2004–2140, and trust users to recognize that classic software from “2084” is really from 1984. But, correct dates get difficult from 2100; the advantage of 1904–2040 is that there’s no need to implement the century rule of leap years, but starting 2100 that’s necessary.
I’ve given this some thought actually. This could be done. One would have to patch the OS traps _Date2Secs and _Secs2Date (which convert the real-time clock result, which is a long containing seconds since 1904, into a date/time record and back) and the International Utilities routines in _Pack6, IUDateString, IUTimeString, IUDatePString, and IUTimePString (which turn the raw long into formatted strings with appropriate localization). This would be easy, and should work for all Mac software that is “old enough” (other ways to deal with date/times may have arisen after the System 7 era, I would need to check). The caveats would be:
1. Sort order will almost certainly be broken; most vintage Mac software will likely sort by the bare long value without interpreting it first
2. The semantics of the raw date time as seconds-since-1904 was documented and never indicated as something that might ever change, so some programs probably just assume that’s how it works and interpret the value themselves (despite the existence of a perfectly good _Secs2Date trap). Those programs will misinterpret post-2040 dates.
3. Moving files with these reinterpreted dates to any machine lacking the patch will show the wrong dates. This would certainly include any modern machines that expect to see a normal, vintage MacOS-style date time.
I may try this one weekend, just to see if it works and be really realllllly well prepared ....