美文网首页
为什么编程时间从1970年1月1日开始?

为什么编程时间从1970年1月1日开始?

作者: 帮我的鸵鸟盖个章 | 来源:发表于2018-12-19 16:31 被阅读0次

最初计算机操作系统是32位,而时间也是用32位表示。

System.out.println(Integer.MAX_VALUE); // 2147483647

IntegerJava内用32位表示,因此32位能表示的最大值是2147483647。另外1年365天的总秒数是31536000

2147483647/31536000 = 68.1

也就是说32位能表示的最长时间是68年,而实际上到2038年01月19日03时14分07秒,便会到达最大时间,过了这个时间点,所有32位操作系统时间便会变为10000000 00000000 00000000 00000000,也就是1901年12月13日20时45分52秒,这样便会出现时间回归的现象,很多软件便会运行异常了。

因为用32位来表示时间的最大间隔是68年,而最早出现的UNIX操作系统考虑到计算机产生的年代和应用的时限综合取了1970年1月1日作为UNIX TIME的纪元时间(开始时间),而java自然也遵循了这一约束。

至于时间回归的现象相信随着64为操作系统的产生逐渐得到解决,因为用64位操作系统可以表示到292,277,026,596年12月4日15时30分08秒,相信我们的N代子孙,哪怕地球毁灭那天都不用愁不够用了,因为这个时间已经是千亿年以后了。

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

那时的计算机操作系统是32位,时间用32位有符号数表示,则可表示 68 年,

用32位无符号数表示,可表示136年。他们认为 以 1970年 为时间 原点 足够可以了。 因此,C 的 time 函数 就这么 定了,后来的 java 等也用它,微机也用它,工作站本来就是unix系统当然也用它。(今后若用64位机年限更没问题。)

1970年1月1日 算 UNIX 和 C语言 生日。

时间戳

全世界各个时区的时间可能都是不一样的,那么就有了时间戳,可以不受时区的限制,精确的表示时间。

时间戳(timestamp),一个能表示一份数据在某个特定时间之前已经存在的、 完整的、 可验证的数据,通常是一个字符序列,唯一地标识某一刻的时间。

时间戳是指格林威治时间1970年01月01日00时00分00秒起至现在的总秒数。

有了时间戳,无论我们深处哪个时区,从格林威治时间1970年01月01日00时00分00秒到现在这一时刻的总秒数应该是一样的。所以说,时间戳是一份能够表示一份数据在一个特定时间点已经存在的完整的可验证的数据。

相关文章

  • 1. 数组:为什么很多编程语言中数组都是从0开始?

    1. 数组:为什么很多编程语言中数组都是从0开始? 在大部分编程语言中,数组都是从0开始编号的,但你是否下意识想过...

  • 为什么编程时间从1970年1月1日开始?

    最初计算机操作系统是32位,而时间也是用32位表示。 System.out.println(Integer.MAX...

  • 编程,从设计开始

    随着科技的发展,编程变得日益重要。很多行业的学者和从业人员都开始学习编程。但是由于方法不当,很多人都在摸爬滚打中艰...

  • 四年编程简史

    我从2011年开始编程,到现在已经有四年了。为什么从2011年开始,因为那一年我上大学了。在上大学之前我对编程一无...

  • 数组:为什么很多编程语言中数组都从0开始编号?

    在大部分编程语言中,数组都是从0开始编号的,那么为什么数组要从0开始编号而不是从1开始呢? 如何实现随机访问 数组...

  • 推广少儿编程是件有意义的事吗?

    为什么会从开发转行到少儿编程呢?我自己也常问自己这个问题,刚开始是因为做开发很辛苦很累,上班时间不规律,而少儿...

  • 从编程思维开始,聊聊学编程

    近年来大学最热门的专业无疑是计算机,而在中小学基础教育这块儿,编程热也是方兴未艾,连奥巴马也提出“编程要从娃娃抓起...

  • STEAM教育与少儿编程

    为什么现在STEAM教育和少儿编程这么火热? 少儿编程如此的火热,记得我是上大学才开始学习编程的。为什么现在孩子这...

  • 学编程从python开始

    为什么是python 1.《C语言从入门到放弃》我学习编程的第一门语言是C语言,当时作为初学者我学起来很吃力,特别...

  • 学习编程从玩开始

    我的儿子Ian学习编程已经快2周了,今天他完成了Playground(注:Playground是苹果公司推出的一款...

网友评论

      本文标题:为什么编程时间从1970年1月1日开始?

      本文链接:https://www.haomeiwen.com/subject/qpijkqtx.html