Unix在1969年诞生之初就采用了一个简单的设计——以离之最近的新年作为计时零点记录流逝的秒数。后来这个计时系统被所有的Unix和Unix-like系统继承了下来。

沈迦勒/编

雨璇/配图

【Q】刘克澄问:为啥程序猿写日子都要换算成和1970-1-1的天数?

【A】

沈迦勒答:人们现在使用的计时系统是公历,计算较为复杂:秒是基本单位,60秒为1分,60分为1小时,24小时是一天…如果计算机内部也使用相同的方式

来计时,

就需要多个变量来分别存放年月日时分秒,不停进位,而且还要处理偶尔的闰年和闰秒以及协调不同的时区。Unix在1969年诞生之初就采用了一个简单的设

计——以离之最近的新年(1970-1-1

00:00:00,公历UTC时间,下同)作为计时零点记录流逝的秒数。后来这个计时系统被所有的Unix和Unix-like系统继承了下来,而且影响

了许多非Unix系统,便于跨平台交流数据。POSIX标准,即可移植操作系统接口(Portable Operating System

Interface of

Unix)推出后,这个时间也被称为POSIX时间。因此在程序中如果时间变量为空、或没有被正确地初始化,只是简单地赋一个0值的话,计算结果便会跳到

1970-1-1;这也是现在的所有操作系统上你无法把时间调到1970-1-1之前的原因。

2001-9-9

01:46:40,Unix时间迎来了第一个Billennium(十亿禧年),即十进制的1,000,000,000。2005-3-18

01:58:31则是Unix时间的光棍节,1,111,111,111。2033-5-18

3:33:20是第二个Billenniumm,然而第三个则不会毫无障碍的来临,在那之前,人们先得解决著名的2038年问题。和本世纪初的千年虫

(Y2K Bug)问题类似,2038年问题(Y2K38

Bug)更隐蔽、更底层、更难解决。计算机内部用来存储时间的32位二进制数中,最高位被用来表示正负符号,所以它能表示的最大数字是2^31-1,即

2147483647, 对应2038-1-19 03:14:07。到这天的凌晨03:14:08,

Unix时间会溢出并变成十进制的-2147483648,也就是1901-12-13

20:45:52,引起和千年虫类似的混乱。这将会影响到所有使用这个计时方式的32位系统及其程序语言。要解决这个问题,最简单的方式是扩展计时的长度

至64位。但愿那时64位系统已成为主流,就可以避免特意去修正这个问题所需要的巨大开销。沈迦勒/编·图灵的苹果

为什么计算机日期最早1970,计算机时间基准——1970.1.1相关推荐

  1. 计算机日期无法更改吗,电脑时间不能修改怎么办 电脑系统时间总是不对怎么办...

    有时候我们的电脑的时间不准,然后想要校正修改,但是发现电脑时间不能修改,这是什么原因造成的呢?小编今天从3个方面分析电脑时间不能修改的原因,进而给出解决问题的教程. 一.系统时间无法修改是什么原因 造 ...

  2. 计算机日函数,09年计算机等级辅导:日期时间函数

    1.DATE 用途:返回代表特定日期的序列号. 语法:DATE(year,month,day) 参数:year为一到四位,根据使用的日期系统解释该参数.默认情况下,Excel for Windows使 ...

  3. 为什么计算机起始时间是1970年1月1日

    1969年8月,贝尔实验室的程序员肯汤普逊利用妻儿离开一个月的机会,开始着手创造一个全新的革命性的操作系统,他使用B编译语言在老旧的PDP-7机器上开发出了Unix的一个版本.随后,汤普逊和同事丹尼斯 ...

  4. 1970-01-01是什么?为什么计算机起始时间是1970年1月1日

    我们是不是也曾见到过或者听说过1970-01-01,而且它好像常常存在于计算机行业,非常常见,从事IT行业的兄弟应该都接触过,那么到底为什么是1970-01-01,而不是其他呢? 其实,1970-01 ...

  5. 漫话:为什么计算机起始时间是1970年1月1日?

    这是我的第 203 期分享 作者 | 漫画编程 来源 | 漫画编程(ID:mhcoding) 分享 | Java中文社群(ID:javacn666) 问题复现 1970-01-01对于开发者来说都是不 ...

  6. 漫画:为什么计算机起始时间是 1970 年 1 月 1 日?

    作者 | 漫话编程 来源 | 漫话编程(ID:mhcoding) 问题复现 1970-01-01对于开发者来说都是不陌生的,有些系统对于时间的处理如果不够好的话,就可能把时间显示成1970-01-01 ...

  7. 如果恢复计算机系统时间吗,一般的计算机还原系统需要多长时间?

    liuguanglei159 有很多方法可以尝试!祝你成功 在Windows XP系统中系统还原要多久,我们可以使用系统附带的"系统还原"功能,通过设置还原点来记录对系统所做的更改 ...

  8. 计算机二级日期格式,09年计算机二级辅导:指定格式的日期字符串转化成java.util.Date类型日期对象...

    09年计算机二级辅导:指定格式的日期字符串转化成java.util.Date类型日期对象 分类:计算机等级| 更新时间:2008-10-16| 来源:教育联展网 将未指定格式的日期字符串转化成java ...

  9. 科学史专家们竟把中国的算盘当成最早的计算机?这个博物馆为你展示计算机2000年历史

    计算机时代 计算机(computer)俗称电脑,是一种用于高速计算的电子计算机器,可以进行数值计算,又可以进行逻辑计算,还具有存储记忆功能. 冯.诺依曼计算机 决定计算机组成:输入.输出.存储器.运算 ...

最新文章

  1. js判断数据类型是哪种
  2. android区块链 钱包_区块链研究实验室|从Android调用区块链智能合约
  3. Resource stopwords not found. Please use the NLTK Downloader to obtain the r
  4. git 忽略文件不起作用
  5. 最优化理论与方法(part4)--秩一校正
  6. 百度之星2019 初赛一 题解
  7. 【theano-windows】学习笔记十四——堆叠去噪自编码器
  8. Solr Wiki文档
  9. 公司新来了个00后测试卷王,老油条表示是真干不过,已被……
  10. 行内元素(HTML、CSS)
  11. poj 1035 Spell checker【字符串】
  12. matlab拟合分析画不出线,lsqcurvefit曲线拟合后,用polt函数画不出拟合的图形
  13. 清华梦的粉碎——写给清华大学的退学申请
  14. ddl是什么意思网络语_跟随你大学的流行词语 DDL 你竟还不知道?
  15. mysql 解决1062报错
  16. 机器学习中 熵的理解
  17. Transformer对接公司需求的调研报告
  18. 心蓝12306订票助手
  19. Unity报错:Assertion failed on expression: ‘IsMatrixValid(matrix)‘...的解决办法
  20. chromium45 对应 depot_tools 和 chromium 版本

热门文章

  1. 用Matlab生成Ornstein-Uhlenbeck过程
  2. java基础知识(七)-- 泛型(Generics )
  3. 想知道未来孩子长相?Python人脸融合告诉你
  4. 【“到此一游”系列】(菜鸡参加“美亚杯” 电子取证大赛感受)
  5. js修改对象数组⾥的对象名字
  6. RenderMonkey基本使用方法【转】
  7. 手机续航能力测试软件,五小时极限测试告诉你荣耀X10续航表现怎么样
  8. 聊聊我在职场的至暗时刻!
  9. jQuery笔记——工具函数——jQuery标志
  10. 指尖江湖鸿蒙抽奖,剑网三:指尖江湖 李忘生竞技场攻略