zoukankan      html  css  js  c++  java
  • 为什么计算机很多语言里的时间都是从1970年1月1日午夜开始计算?

        程序语言受电脑系统影响,而现代电脑系统都受到Unix系统的广泛影响,而1970年1月1日这个时间正是Unix系统的起始时间(epoch·time)。所以每个时间戳都以自从1970年1月1日午夜(历元)经过了多长时间来表示

        当年的电脑需要一个可靠的外部时钟同步源,因此早期的Unix系统用一个32位字长表示时间,以1/60秒,即1Hz为时间间隔和外部时间源同步(这道不完全是由于老美的电网频率是60Hz的缘故,当时的系统主板的晶振就是1Hz)。 结果这个时间所表示的跨度只有大约829天(约2.5年),显然不够用,因此需要一个原始的起始(〔纪〕··〔元〕)时间,由于Unix系统源自上时间69年代,第一个正式版本于1970年首次运行在PDP-11上,1971年11月UNIX Programmer's Manual(Unix程序员手册)首次公布,这个手册里面提及了起始时间,将它定义为【1971】年1月1日。-- 手册也承认,该起始时间大约每2.5年就要重新修正一次。

        之后系统时间同步间隔被修订为1秒,这样32位就可表述约136年的跨度,也正是这个期间(具体年份不祥),起始时间被修订为1970.1.1 (Unix开发者认为把之前的1971.1.1取整进位到最临近的年代起始(以每10年一个断代算),要比1971这个有点不伦不类的时间好),因此从这以后,Unix一直沿用了1970.1.1这个起始时间,而相关的程序也相应的沿用了这个时间,而深受Unix影响的后续操作系统们,如:OS/2, Windows, Mactonish, Linux。。。。都沿用了这个{事实标准}。

  • 相关阅读:
    展望未来,总结过去10年的程序员生涯,给程序员小弟弟小妹妹们的一些总结性忠告
    马士兵_JAVA自学之路(为那些目标模糊的码农们)
    Java知识点总结
    解决:对COM组件的调用返回了错误HRESULT E_FAIL
    平差方法
    二进制、八进制、十进制、十六进制之间转换
    解决电脑复选框图标不正确方法
    SQL语句中的Create
    字段的值转换为大小写
    SQL NOW() 函数
  • 原文地址:https://www.cnblogs.com/xisheng/p/7634106.html
Copyright © 2011-2022 走看看