ImpossibleEmailDates

A friend of mine asked why he got an email from 1969. That got me thinking a bit and here's what I ended up writing back to him.

This would probably be a good question for a sysadmin job interview.


From philiph@pobox.com Thu Jan 15 16:21:47 2009
To: joe
Subject: Re: ruminations
Date: Thu, 15 Jan 2009 16:21:47 -0800

On Jan 15, 2009, at 3:14 PM, joe wrote:
> p.s. check out the date below.  Does that actually read "1969?"
> --- On Wed, 12/31/69, <> wrote:
> From: <>
> Subject:
> To:
> Date: Wednesday, December 31, 1969, 4:00 PM

Yes, and I will explain why (you may regret asking).  Computer time
has to start at some arbitrary date and count forward from that.  In
the unix world (the computers behind the scenes that handle most
email) that date is 12:00AM January 1 1970 UTC:

http://en.wikipedia.org/wiki/Unix_time

the date on all unix machines is stored as the number of seconds since
the start of time (called the epoch).  So for example that number
right now as I write is 1,232,064,272 seconds.  That makes it easy to
compare dates since you can just add and subtract seconds without
worrying about minutes, hours, etc.  Obviously you convert to human-
readable time formats to actually display the time.

So anyway the earliest time that can be represented on a unix computer
is as I said 12:00AM January 1 1970 UTC.  UTC used to be called
Greenwich Mean Time and it's the time at longitude 0" running through
the observatory in Greenwich, England. UTC/GMT is 8 hours ahead of
Pacific standard time.

So a bogus message got generated somehow and sent to you (could just
be some random corruption in your inbox).  The computers along the way
didn't have a time to go along with the message so they assigned a
value of 0.  That's 0 seconds since the epoch and remember that UTC is
8 hrs ahead of PST.  Thus the date was ultimately shown to you as
4:00pm December 31 1969, 8 hours behind UTC because you are in PST.

Now to take this a step further, traditional unix time is stored in a
signed 32-bit integer.  That means the largest time that can be
represented is 12:00AM UTC 1970 + 2,147,483,647 seconds, which is
3:14:07AM UTC on January 19 2038.  That's sort of the next step after
the y2k problem.  Hopefully by then we will have converted all
computers to use 64-bit time, which pushes the largest possible day
millions of years in the future.  However there will probably be at
least a few old computers running then which will fail:

http://en.wikipedia.org/wiki/Year_2038_problem

So I am planning on having a party on January 18, 2038 to celebrate
the end of time.  I'll be 66 then.  I hope you will be able to attend.

P.

CategoryGeekStuff

CategoryBlog



Our Founder
ToolboxClick to hide/show
RecentChanges Click to hide/show