Writing

Feed Software, technology, sysadmin war stories, and more.

Wednesday, October 7, 2020

Remembering a classic "time travel" bug

It's been twenty five years since something goofy happened involving time handling on computers, and I figured it's worth celebrating that anniversary with a post.

In August of 1995, Windows 95 came out. It was a Very Big Deal for anyone who was tuned into the whole Microsoft world, and simultaneously a source of scorn and anguish for those of us who were not. Any time it did something stupid, we laughed. Any time it did something good, we groaned.

To appreciate what happened, you have to remember that before 2007, the daylight saving time rules for the US did the fall flip in October.

October 29, 1995 was the first time it came up for Windows 95, and it did something... stupid, and we sure remembered it.

Recall that the thing in the fall is that you effectively "repeat" the hour. You go from 01:59:59 xDT to 01:00:00 xST, and then progress forward from there. Win95 knew this... kinda sorta.

Sure enough, people on IRC reported that Win95 changed their clock backwards one hour when DST ended in their time zone, and popped up a little notification about it. They'd look down in the corner and there it was: 1:00 AM. They were proud of this. They showed it off.

Unfortunately for them, 95 didn't quite get it right. You see, an hour later, when it should have gone from 01:59:59 xST to 02:00:00 xST, it didn't. It went BACK to 1 AM. Apparently, it had no notion of realizing which time zone it was in, or whether it had done the flip already. So, an hour later, we were presented with this gem from someone who had jumped on the 95 bandwagon and was still awake at that hour:

Win95 just updated my daylight savings time...AGAIN!

Evidently the rule was "when it's 1:59:59 on the day of the transition, jump back to 1:00:00 and pop up the notice", without any regard for what had happened previously. It just kept going, and going, and going...

Fortunately, here in 2020, nobody ever makes those time mistakes now, right? Just like how no code just broke last week when we went from a one-digit-wide month (9) to a two-digit-wide one (10), right?

Yep. Seems legit.