精华内容
下载资源
问答
  • 计算机时间、unix时间、linux时间、java时间为何以1970年1月1日为原点?从1970年1月1日开始计算? 今天在看Python API时,看到time模块: The epoch is the point where the time starts. On January 1st of ...

    计算机时间、unix时间、linux时间、java时间为何以1970年1月1日为原点?从1970年1月1日开始计算?

    今天在看Python   API时,看到time模块:
    The epoch is the point where the time starts. On January 1st of that year, at 0 hours,the “time since the epoch” is zero. For Unix, the epoch is 1970. To find out what the epoch is, look at gmtime(0).
    定义time从1970年1月1日开始,忽然想到在JAVA里,Oracle数据库时间也是从1970
    年1月1日开始计算。比如java类代码
    Date date = new Date(0);
    System.out.println(date);
    打印出来的结果:
    Thu Jan 01 08:00:00 CST 1970
    也是1970年1月1日,实际上时分秒是0点0分0秒(这里打印出来是8点,稍后会作解释)。
    为什么这个时间会定义在1970年1月1日这个时候呢?
    于是开始了Google,中文网页根本找不到答案。于是试着搜索英文关键字,在Sun java论坛总算找到准确的帖子:
    http://forums.sun.com/thread.jspa?threadID=595140&start=15
    其中有一个回复:
    I suspect that Java was born and raised on a UNIX system.
    UNIX considers the epoch (when did time begin) to be midnight, January 1, 1970. 
    是说java起源于UNIX系统,而UNIX认为1970年1月1日0点是时间纪元.
    但这依然没很好的解释"为什么",出于好奇,继续Google,总算找到了答案:
    http://en.wikipedia.org/wiki/Unix_time
    这里的解释是:
    最初计算机操作系统是32位,而时间也是用32位表示。
    System.out.println(Integer.MAX_VALUE);
    2147483647
    Integer在JAVA内用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代子孙,哪
    怕地球毁灭那天都不用愁不够用了,因为这个时间已经是千亿年以后了。
    最后一个问题:上面System.out.println(new Date(0)),打印出来的时间是8点而非0点,
    原因是存在系统时间和本地时间的问题,其实系统时间依然是0点,只不过我的电脑时区
    设置为东8区,故打印的结果是8点。
    我想以上问题如果作为面试题,也能难倒一批人了.
                   

    展开全文
  • 今天我们来讨论一个非常有意思的事,那就是你知道为什么计算机时间和众多的编程语言的时间都要从1970年1月1日开始算起呢,时间计时起点到底为什么是 1970年1月1号呢?我想大家应该都知道,但是我估计大家几乎大部分...
    导读
    
      今天我们来讨论一个非常有意思的事,那就是你知道为什么计算机时间和众多的编程语言的时间都要从1970年1月1日开始算起呢,时间计时起点到底为什么是 1970年1月1号呢?我想大家应该都知道,但是我估计大家几乎大部分都没有想过这个问题。我们就一起来聊聊,这是为什么?

    为什么计算机时间要从1970年1月1日开始算起为什么计算机时间要从1970年1月1日开始算起

    1、最懒的解释

    很多编程语言起源于UNIX系统,而UNIX系统认为1970年1月1日0点是时间纪元,所以我们常说的UNIX时间戳是以1970年1月1日0点为计时起点时间的。

    说了这个懒人的解释,估计大家还没有懂得真正的意思。所以我们接下来深入的了解一下。

    2、深入了解

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

    1.System.out.println(Integer.MAX_VALUE);
    2.2147483647
    

    Integer 在JAVA内用32位表示,因此32位能表示的最大值是2147483647。另外1年365天的总秒数是 31536000,2147483647/31536000 = 68.1,也就是说32位能表示的最长时间是68年,从1970年开始的话,加上68.1,实际最终到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的纪元时间(开始时间),至于时间回归的现象相信随着64为操作系统的产生逐渐得到解决,因为用64位操作系统可以表示到 292,277,026,596年12月4日15时30分08秒,相信我们的N代子孙,哪怕地球毁灭那天都不用愁不够用了,因为这个时间已经是千亿年以后 了。



     本文地址 :  http://www.linuxprobe.com/why-computer-time.html

     免费提供最新Linux技术教程书籍,为开源技术爱好者努力做得更多更好:http://www.linuxprobe.com/


    展开全文
  • 计算机时间、unix时间、Linux时间、java时间为何以1970年1月1日为原点从1970年1月1日开始计算? 今天在看Python API时,看到time模块: The epoch is the point where the time starts. On January 1st ...

    计算机时间、unix时间、Linux时间、java时间为何以197011日为原点从197011日开始计算?

    今天在看Python API时,看到time模块:
    The epoch is the point where the time starts. On January 1st of that year, at 0 hours,the “time since the epoch” is zero. For Unix, the epoch is 1970. To find out what the epoch is, look at gmtime(0).
    定义time从1970年1月1日开始,忽然想到在JAVA里,Oracle数据库时间也是从1970
    年1月1日开始计算。比如java类代码
    Date date = new Date(0);
    System.out.println(date);
    打印出来的结果:
    Thu Jan 01 08:00:00 CST 1970
    也是1970年1月1日,实际上时分秒是0点0分0秒(这里打印出来是8点,稍后会作解释)。
    为什么这个时间会定义在1970年1月1日这个时候呢?
    于是开始了Google,中文网页根本找不到答案。于是试着搜索英文关键字,在Sun java论坛总算找到准确的帖子:
    http://forums.sun.com/thread.jspa?threadID=595140&start=15
    其中有一个回复:
    I suspect that Java was born and raised on a UNIX system.
    UNIX considers the epoch (when did time begin) to be midnight, January 1, 1970. 
    是说java起源于UNIX系统,而UNIX认为1970年1月1日0点是时间纪元.
    但这依然没很好的解释"为什么",出于好奇,继续Google,总算找到了答案:
    http://en.wikipedia.org/wiki/Unix_time
    这里的解释是:
    最初计算机操作系统是32位,而时间也是用32位表示。
    System.out.println(Integer.MAX_VALUE);
    2147483647
    Integer在JAVA内用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代子孙,哪
    怕地球毁灭那天都不用愁不够用了,因为这个时间已经是千亿年以后了。
    最后一个问题:上面System.out.println(new Date(0)),打印出来的时间是8点而非0点,
    原因是存在系统时间和本地时间的问题,其实系统时间依然是0点,只不过我的电脑时区
    设置为东8区,故打印的结果是8点。
    我想以上问题如果作为面试题,也能难倒一批人了.

    展开全文
  • Linux中的时间从1970年0101开始

    千次阅读 2018-04-19 17:57:00
    Linux中的时间UNIX及Linux的时间系统是由「新纪元时间」Epoch开始计算起,单位为秒,Epoch则是指定为1970年一日凌晨零点零分零秒,格林威治时间。目前大部份的UNIX系统都是用32位元来记录时间,正值表示为1970以...

    Linux中的时间
    UNIX及Linux的时间系统是由「新纪元时间」Epoch开始计算起,单位为秒,Epoch则是指定为1970年一月一日凌晨零点零分零秒,格林威治时间。

    目前大部份的UNIX系统都是用32位元来记录时间,正值表示为1970以後,负值则表示1970年以前。我们可以很简单地计算出其时间领域:
    2^31/86400(s) = 24855.13481(天) ~ 68.0958(年)
    1970+68.0958 = 2038.0958
    1970-68.0958 = 1901.9042
    时间领域为[1901.9042,2038.0958]
    准确的时间为2038年一月十八日星期一晚上十点十四分七秒。那一刻,时间将会转为负数,变成1901年十二月十三日黑色星期五下午三点四十五分五十二秒,然後Jason就会跑出来用斧头砸掉您的电脑。
    这就是所谓的UNIX 2038 BUG,或者您也可戏称为Jason hatchet bug。在大部份的UNIX上,并没有所谓Y2K问题,不过都有2038年问题。

    在一些64位元的平台上,例如Digital Alpha、SGI、Sparc等等,则用64位元来表示时间。
    2^63/86400 ~ 1E14(天) ~ 2.92E11(年) 。大约是2920亿年。
    因此,使用64位元的电脑可能会有 Armageddon bug 的问题。届时位於猎户座旋臂的太阳,已经是黑矮星或暗黑物质,猎户座旋臂大概也已经被重力波震断,银河系大概则已经变成小型似星体了。

    虽然许多人认为UNIX的2038年问题会随着科技的进步,而将电脑逐步汰换成64位元电脑,因此无须担心。但我个人相信,在2038年,依然会有许多状况出现。因为,就事实而言,目前许多UNIX系统都有足够的能力服役到2038年而毫无问题。因此,如果有意添购电脑主机,而且有预期会使用到那个时候,最好是选购64位元电脑,确认只有世界末日问题(除非您想要把资料流传给下一个宇宙,那就要另当别论了)。

    展开全文
  • C++获取系统时间1970年1月1日到现在的毫秒数
  • 问题由来:之前在JS中学到Date对象时,时间是从1970年1月1日0时开始的,现在看Java居然也是这样,就很好奇,为什么时间都用这个时间点来计算。然后百度了下,发现有一个很好的帖子描述了这个问题。现在转载过来,以...
  • 在系统提供的C语言函数中,获取的时间值是从1970年1月1日0点到当前时间所流经的秒数,如果我们基于此计算两个时间之间天数的差值,将会大大简化我们的计算公式 /> cat > test6.sh #!/bin...
  • /// /// 随机生成客户名字,即1970年1月1日到现在的秒数放到application /// /// private string GetCstNo() { //客户的名字 int cstName = 0; Hashtable hashtable = (Hashtable)App
  • 获取1970年1月1日 00:00:00及标准时间到指定时间以来的毫秒数,外加获取当天凌晨到当前时间的毫秒数。
  • unsigned long Year = 1970; unsigned long Month = 1; unsigned long Day = 1; unsigned long Hour = 1; unsigned long Min = 1; unsigned long Second = 0; void Calc_Time(unsigne
  • 1.可以简单的这样认为:UNIX系统认为1970年1月1日0点是时间纪元,所以我们常说的UNIX时间戳是以1970年1月1日0点为计时起点时间的。这个解释是懒人最爱^_^   2.这个比较科学 最初计算机操作...
  • 返回date对象距1970年1月1日午夜之间的毫秒数(时间戳) UTC说明 此函数为静态函数,应该直接调用 从UTC方法和Date对象的构造函数都可以获取一个日志,它们之间的差别在于: UTC方法假定是UTC,Date对象的...
  • #include #include #include using namespace std; int main() { long long time_last; time_last = time(NULL); cout; //秒数 struct timeb t1; ftime(&t1); cout;
  • Linux输出1970-1-1以来的毫秒计数

    千次阅读 2015-08-11 22:20:11
    http://stackoverflow.com/questions/16548528/linux-command-to-get-time-in-milliseconds echo $(($(date +%s%N)/1000000)) date +%s%3N
  • Linux下编写一C程序,用于获取当前时间到1970年之前某年份的秒数。二、C代码实现/********************************************************************* * 版权所有 (C)2015, Zhou Zhaoxiong。 * * 文件名称:...
  • Linux面试题(2020最新版)

    万次阅读 多人点赞 2020-03-01 11:14:38
    文章目录Linux 概述什么是LinuxUnix和Linux有什么区别?什么是 Linux 内核?Linux的基本组件是什么?Linux 的体系结构BASH和DOS之间的基本区别是什么?Linux 开机启动过程?Linux系统缺省的运行级别?Linux 使用的...
  • Linux

    2020-09-25 21:34:46
    1.1 Linux的发行版本:1.2 Linux的服务器类型Linux 系统目录结构2.0 树状目录结构如下:2.1目录解释:Linux 文件基本属性3.0 在Linux中代表这个文件是目录、文件或链接文件等等。3.1 文件属性3.2 更改文件属性Linux ...
  • 关于Linux内核月报Linux阅码场Linux阅码场内核月报栏目,是汇总当月Linux内核社区最重要的一线开发动态,方便读者们更容易跟踪Linux内核的最前沿发展动向。限于篇幅,只会对...
  • Linux从青铜到王者】第一篇:Linux常见指令

    万次阅读 多人点赞 2021-05-24 16:24:09
    文章目录系列文章目录前言一、Linux是什么二、Linux下基本指令1.ls指令2.pwd指令3.cd指令4.touch指令5.mkdir指令6.rmdir指令7.rm指令8.man指令9.echo指令10.cp指令2.读入数据总结 前言 一、Linux是什么 Linux是...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 19,207
精华内容 7,682
关键字:

linux1970年1月1日

linux 订阅