2106年2月7日,一个神奇的日子

今天妹子告诉我了个有趣的事情,她的Skype穿越了,客户发来的信息显示时间是2106年2月7日,

Image Title

看到这个,我第一反应是,是否电脑时间设置有误?经检查,系统时间是正常的。我突然想起来,这个时间似乎很熟悉。 我又想到了一种可能,搜索 mysql int,查到 32位 无符号整型的最大值是2^32-1 也就是 4294967295,然后打开iPython,输入

In [12]: time.localtime(2**32-1)
Out[12]: time.struct_time(tm_year=2106, tm_mon=2, tm_mday=7, tm_hour=6, tm_min=28, tm_sec=15, tm_wday=6, tm_yday=38, tm_isdst=0)

回显的结果证实了我的猜测,Skype用来存储聊天记录时间的,很可能是UNSIGNED INT型,时间存储时发生了异常,致使数据溢出,变成了 4294967296,解析后正好是2106年2月7日。

我又想起了曾经看到某网站,信息发布日期是1970 01-01,这也好解释,可能是存储时数字溢出变成了0,也可能是默认值为0,格式化后就变成了1970 01-01。

在我把这些解释告诉妹子之后,妹子没有表示出预期的钦佩,反而怪我破坏了她的艺术猜想... oh,程序猿!!!

4,408 views, since 2014-02-18