`
winfred1206
  • 浏览: 13334 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

为何计算机等电子设备要用1970年1月1日作参考时间

    博客分类:
  • Java
阅读更多

          在java中用过System类下的 CurrentTimeMillis()或Date类的相关的时间、日期的方法函数的同学都知道,我们常要与1970年1月1日零时的时间做差值计算。很多同学或许做过,但是或许有一部分不知道为什么是这样的,计算机工程师、物理科学家们可是相当聪明的人,他们为何要这么做呢?接下来,我就简要谈一谈?

      1970.1.1是个神马特殊的日子?为什么要给这个奇葩如此“殊荣”?原来,1970.1.1是被看作计算机的元年,最早出现的UNIX操作系统考虑到计算机产生的年代和应用的时限综合取了1970年1月1日作为UNIX TIME的纪元时间(开始时间),而java、数据库、许多精密的仪器等也自然也遵循了这一约束。

       看完上面一段,或许就明白了,但是我觉得还是有必要多了解有一些相关小知识,“技多不压身”。通常,国际上也有不少计时都是采用的GMT,全称是GreenWich Mean Time,,现在一些电子设备时间的计算和显示是以距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量为标准的,如1970-1-10 20:47 偏移量为2724441632毫秒,出现类似字样说明时间被初始化了。 但是我们在API文档里看到的是与UTC(Universal Time Coordinated)时间相关,

       -----UTC,协调世界时,又称世界标准时间或世界协调时间,简称UTC(从英文“Coordinated Universal Time”/法文“Temps Universel Cordonné”而来),是最主要的世界时间标准,其以原子时秒长为基础,在时刻上尽量接近于格林尼治平时。中国大陆采用ISO 8601:2000的国家标准GB/T 7408-2005《数据元和交换格式 信息交换 日期和时间表示法》中亦称之为协调世界时。台湾采用CNS 7648的《资料元及交换格式–资讯交换–日期及时间的表示法》(与ISO 8601类似)称之为世界协调时间。(参考维基百科)

        诚然UTC是一种更为科学的计时标准,在今天相对论、量子学、弦论等高大上的日益发展、完善,时间的精确度越来越苛刻,或许,在不久的将来XXX计时标准又会出现。 然而,对于普通民众来说,GMT、UTC的差别可以几近忽略,因为,协调世界时UTC与世界时GMT相差不会超过0.9秒,当大于此值时,位于巴黎的国际地球自转事务中央局负责决定何时加入闰秒。

         还有一个有意思的类似 千年虫Y2K BUG的问题,公历的UTC时间2038年1月19日3时14分7秒. 到这天的凌晨3时14分8秒, UNIX时间会溢出并变成10000000 00000000 00000000 00000000(十进值-214748368), 也就是UTC时间1901年12月13日20时45分52秒, 引起和千年虫类似的混乱.可是,也不必担心,因为,这描述的是使用32位操作系统的仪器将要出现的BUG,现在64位电脑操作系统已经很普遍,手机也出现了首款64位的操作系统(5s上运行的即是), 要等64位的出现这样溢出的BUG,那得等到292,277,026,596年12月4日15时30分08秒,那时的事情我就不去想了,想了也是在自己跟自己瞎扯淡。

 

 

      文献参考:

               1)为什么编程语言以及数据库要从1970年1月1日开始计算时_无情无绪_新浪博客 http://blog.sina.com.cn/s/blog_61352f210100geai.html

               2)Java API文档,System、Date类相关资料

               3)为什么计算机和一些电子产品的时间选择在1970.1.1 - NEVER - 博客频道 - CSDN.NET http://blog.csdn.net/jacqueslim/article/details/6909861此文被很多很多博主转载,被“原创”,写的很好,也找不到真实的原创了)

               4)Wikipedia(维基百科)

               5)百度百科

分享到:
评论

相关推荐

    20计算机应用基础.doc

    表1.1.1 计算机的发展情况表 "计算机发展阶段 "使 用 时 间 "主要电器元件 " "第一代计算机 "1946~1957年 "电子管 " "第二代计算机 "1958~1964年 "晶体管 " "第三代计算机 "1965~1970年 "中、小规模集成电路" ...

    认识计算机课件.ppt

    计算机,一种能够执行预先编程指令的电子设备,是现代科技的重要组成部分。它的基本功能是存储和处理信息,使人们能够高效地完成计算、数据管理和通信任务。计算机的发展历程可以分为四个主要阶段: 1. **第一代...

    计算机的过去现在与未来

    第一台电子计算机是埃尼阿克(ENIAC),诞生于1946年2月14日的美国宾夕法尼亚大学。这台庞然大物能够在1秒钟内进行5000次加法运算,速度远超当时最快的继电器计算机。 计算机的发展可以分为四代:第一代电子计算机...

    第八届蓝桥杯之电子钟

    在计算机中,时间通常以秒为单位,从1970年1月1日(UTC)开始计算,这就是著名的Unix时间戳。你可以通过将时间戳转换为人类可读的格式,如“年-月-日 时:分:秒”。 算法在电子钟的实时更新中起到关键作用。为了使...

    电子时钟,电子时钟显示屏,C,C++源码.zip

    `time()`函数用于获取当前时间,返回的是一个`time_t`类型的值,通常表示自1970年1月1日以来的秒数。然后,我们可以使用`ctime()`或`localtime()`将这个时间戳转换为可读的日期和时间格式。 C++作为C语言的扩展,...

    计算机《认识计算机及计算机发展史》课.ppt

    历史上第一台电子计算机ENIAC(埃尼阿克)诞生于1946年2月14日,由美国宾夕法尼亚大学研发。自那时以来,计算机经历了四个主要发展阶段: 1. 电子管时代(1946-1958):这是计算机的初创阶段,使用真空电子管作为...

    万年历1970-2100,带择日,节假,最全的

    这个范围的选择有其科学性,因为1970年是计算机时代的一个重要时间节点,许多编程语言以1970年1月1日作为时间戳的起点,而2100年则是考虑到一个较长时间的跨度,能够满足大多数人的日常需求。 首先,让我们来看...

    《二进制与计算机》教学设计.pdf

    接下来,“John1970”可能是指某个特定格式的日期表示方式,通常在软件或编程中用来表示日期和时间戳,其中“John”可能是某个变量或标识符的名字,而“1970”是指Unix纪元,即1970年1月1日午夜开始的秒数计数。...

    计算机发展史简介精品.doc

    第一代电子计算机ENIAC(电子数字积分计算机)于1946年在美国诞生,使用了大量的真空管进行逻辑运算,这标志着电子计算机时代的开始。然而,真空管计算机体积庞大,能耗高,且可靠性差。随后的UNIVAC I和EDSAC等也...

    多功能万年历制作全套资料

    在计算机科学中,日期和时间的处理通常涉及到时间戳,即自1970年1月1日(UTC/GMT的午夜)开始所经过的秒数。开发者需要编写算法,确保能够准确地转换和显示公历、农历等各种日历格式,同时考虑到闰年和月份天数的...

    计算机新技术作业.doc

    1. 第一代(1946-1957):电子管计算机,特点是体积大、功耗高,使用真空电子管和磁鼓存储数据。 2. 第二代(1958-1963):晶体管计算机,晶体管的使用使得计算机变得更小、更节能,同时引入了磁芯存储器。 3. 第三...

    jingtaishumaguan_电子表_

    `time()`函数返回自1970年1月1日(UTC)以来的秒数,称为Unix时间戳。 2. **格式化时间**:获取Unix时间戳后,我们可以使用`localtime()`函数将其转换为本地时间,然后使用`strftime()`函数将时间转换为所需的格式...

    计算机基础知识与基本操作.ppt

    - **第三代(1965-1970年)**:中小规模集成电路的应用显著提升了计算机性能,出现了操作系统,应用领域进一步扩展。 - **第四代(1971年至今)**:大规模集成电路(LSI)和超大规模集成电路(VLSI)的使用,使得...

    RTC 实时时钟的实现与制作PDF

    这可能涉及到设置硬件时钟源的初始化,并从某一固定参考点(如1970年1月1日)开始计时。通过时间调整函数,可以将RTC模块的时间设置为任意需要的时刻。 在程序运行时,可以通过诸如USART_Scanf(uint32_t value)之类...

    1.1 计算机发展历史及特点..ppt

    ENIAC由美国费城的科学家们于1946年2月14日研发成功,其设计理念受到了英国数学家艾伦·图灵的理论影响,他在1936年的论文中提出了通用计算机器的概念,即后来被称为图灵机的基础。 计算机的发展经历了四个主要的...

    基于c语言实现的电子时钟程序

    `time_t`是用于存储时间的整型变量,可以表示从1970年1月1日00:00:00到当前时刻的秒数。 2. **获取当前时间(time()函数)**: `time()`函数用于获取当前系统时间,返回值为`time_t`类型,可以转换为结构体`struct...

    一级MS_Office选择题

    - **细节**: 世界上第一台通用电子计算机名为ENIAC(Electronic Numerical Integrator and Computer),它于1946年2月15日在美国宾夕法尼亚大学诞生。 #### 2. 不同代计算机所使用的电子元件 - **知识点**: 随着...

    今年全国计算机等级考试一级B考点讲解.pdf

    1946年2月15日,世界上第一台电子计算机ENIAC(Electronic Numerical Integrator And Computer)在美国宾夕法尼亚大学诞生,标志着计算机科学的开端。ENIAC的诞生具有划时代的意义,不仅推动了信息技术的发展,也为...

    2021-2022计算机二级等级考试试题及答案No.10202.docx

    8. `currentTimeMillis()`方法:Java中的`System.currentTimeMillis()`方法返回的是当前时间距离1970年1月1日00:00:00 GMT的毫秒数。 9. 实现接口:如果一个类实现了一个接口,那么它必须实现接口中定义的所有方法...

    dianzizhong.rar_c语言 电子钟

    2. **时间函数(time()和localtime())**:`time()`函数用于获取当前系统时间,返回一个`time_t`类型的值,表示自1970年1月1日以来的秒数。`localtime()`函数将`time_t`类型的时间转换为`struct tm`结构体,方便我们...

Global site tag (gtag.js) - Google Analytics