zoukankan      html  css  js  c++  java
  • Java时间为什么从1970-01-01 00:00:00 000开始

    不仅仅是Java,几乎所有的语言的时间都是从这一刻开始算起的.

    原因:java起源于UNIX系统,而UNIX认为1970年1月1日0点是时间纪元.


    最初计算机操作系统是32位,而时间也是用32位表示。
    System.out.println(Integer.MAX_VALUE);#int的最大值
    2147483647

    Integer在JAVA内用32位表示,因此32位能表示的最大值是2147483647。另外1年365天的总毫秒数是
    365*24*60*60*1000=31536000

    2147483647/31536000 = 68.1

    也就是说32位能表示的最长时间是68.1年,过了这个时间点,所有32位操作系统时间便会变为
    10000000 00000000 00000000 00000000,所以采用时间类型是long类型


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


    System.out.println(Long.MIN_VALUE);//最大值
    9223372036854775807

    至于时间回归的现象随着64位操作系统的产生逐渐得到解决,因为用64位操作
    系统可以时间表示到292278994-08-17 15:12:55 807,相信我们的N代子孙,哪
    怕地球毁灭那天都不用愁不够用了,因为这个时间已经是亿年以后了。

    SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
    Date date=new Date();
    date.setTime(0);
    System.out.println(sdf.format(date));

    打印结果: 1970-01-01 08:00:00 000 这是因为我门在东八区,比格林威治

    0时区早8个小时导致的。

  • 相关阅读:
    基本内置类型
    多维数组
    数组
    迭代器
    标准库类型 vector
    标准库类型 string
    运算符优先级表
    类型转换
    sizeof 和逗号运算符
    位运算符
  • 原文地址:https://www.cnblogs.com/mike-mei/p/11079822.html
Copyright © 2011-2022 走看看