August 1970

TL;DR

Why has everyone been hired in August 1970?

Some days ago a colleague and I were looking at some weird data about our profiles in one system (an instance of the open-source Moodle platform). It seemed like every one of us had been hired in August of year 1970, with only slight changes in the exact day.

I mean, were it the same day for all of us I might have thought of some error like a hardcoded value, but the day actually changed so it was somehow related to the actual date.

Let’s take, as an example, someone being hired on May 4th, 2022. Well, our weird system would think that they would have been hired on August 23rd, 1970 instead.

What gives? Well, the first thing to take into consideration is how we fed the hiring date to the system, which is in YYYYmmdd format, like 20220504 in our example. Which is interestingly close to be read as an integer decimal number amounting to slightly above 20 millions.

The other clue is that it’s all happening in year 1970, which is a notable year by itself, at least for IT people.

I’m not good at suspance, and most of you will have guessed right at this point: the system thinks that these values are unix times expressed as seconds since 1970-01-01 00:00:00. Let’s look at some examples:

$ perl -MPOSIX=strftime -E 'say strftime "%Y-%m-%d", gmtime $_ for @ARGV' \
    19000101 19700101 19900101 20100101 20220504
1970-08-08
1970-08-17
1970-08-19
1970-08-21
1970-08-23

Now this makes sense!

Stay safe folks!


Comments? Octodon, Twitter, GitHub, Reddit, or drop me a line!