关闭

Java时间为什么从1970-01-01 00:00:00 000开始

标签: java操作系统unix32位java时间
5845人阅读 评论(6) 收藏 举报
分类:
不仅仅是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个小时导致的。
1
0
查看评论

1970-01-01 08:00:00 时间由来

在用ng的date过滤服务的时候时间戳0会转换成1970-01-01 08:00:00; 是因为起源于UNIX系统,以Unix诞生的时间为参照确定的,UNIX认为1970年1月1日0点是时间纪元,现代计算机(电话,电子设备)时间以1970 年 1 月 1 日的 08:00为基准, 在时间转换时,...
  • u013291076
  • u013291076
  • 2017-04-06 09:27
  • 1084

TortoiseSVN----看不到日志,显示1970-01-01

我svn使用摸索中,今天遇到个问题,更新了一个文件,发现把服务器上的正确版本覆盖了,需要回退。 按照网上的教程,选择switch,show log 刚开始以为是程序错误了,更新了版本,还是不行,网上百度,说需要修改svnserve.conf,我没在安装目录下找到, 还有...
  • huyishero
  • huyishero
  • 2017-07-19 10:12
  • 2626

Linux硬件时钟和系统时钟设置

Linux时钟分为系统时钟(System Clock)和硬件时钟(Real Time Clock,简称RTC)。系统时钟是指当前Linux Kernel中的时钟;而硬件时钟则是主板上由电池供电的时钟,硬件时钟可以在BIOS中进行设置。当Linux启动时,系统时钟会去读取硬件时钟的设置,然后系统时钟就...
  • zuijinhaoma8
  • zuijinhaoma8
  • 2015-01-05 15:37
  • 493

关于1970-1-1 00:00.000的知识

现在计算机和一些电子设备时间的计算和显示是以距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量为标准的,如1970-1-10 20:47 偏移量为2724441632毫秒,出现类似字样说明时间被初始化了。小知识:格林威治标准时间GMT许多人都知...
  • tianzizhi
  • tianzizhi
  • 2009-09-13 01:10
  • 40018

JavaScript 日期对象Date(声明/Date对象的方法/返回距离1970/01/01毫秒数)

1. 日期对象声明 2. Date对象的方法 3. 返回距离1970/01/01毫秒数
  • carriehaohao
  • carriehaohao
  • 2017-03-06 20:51
  • 1627

Java 时间格式 new Date()

主要是记录下自己在项目中使用new Date();过程中遇到过的坑。
  • u012768554
  • u012768554
  • 2015-08-06 13:50
  • 8684

java 日期格式控制,关于1970年1月1日0时

1.可以简单的这样认为:UNIX系统认为1970年1月1日0点是时间纪元,所以我们常说的UNIX时间戳是以1970年1月1日0点为计时起点时间的。这个解释是懒人最爱^_^   2.这个比较科学 最初计算机操作系统是32位,而时间也是用32位表示。32位能表示的最大值是2147...
  • vavid317
  • vavid317
  • 2012-03-29 18:00
  • 1031

Date.UTC()返回1970年1月1日午夜之间的毫秒数

UTC函数语法 Date.UTC(year, month, day); Date.UTC(year, month, day, hours); Date.UTC(year, month, day, hours, minutes); Date.UTC(year, month, day, hours, ...
  • leiyong0326
  • leiyong0326
  • 2014-07-25 17:01
  • 2291

为什么java中的时间是从1970年1月1日开始的?

比如java类代码 Date date = new Date(0); System.out.println(date); 打印出来的结果: Thu Jan 01 08:00:00 CST 1970 也是19...
  • lkl713
  • lkl713
  • 2014-05-07 15:32
  • 6411

java为什么计算时间从1970年1月1日开始

java为什么计算时间从1970年1月1日开始
  • wh62592855
  • wh62592855
  • 2011-03-11 13:30
  • 9699
    个人资料
    • 访问:295865次
    • 积分:4213
    • 等级:
    • 排名:第8609名
    • 原创:148篇
    • 转载:8篇
    • 译文:0篇
    • 评论:56条
    博客专栏