话说在中国1927年12月31日午夜发生了一件神奇的事情,中国时间瞬间增加了5分52秒,

不管你信不信,反正我信了!不信你看下边代码!

/** Licensed to the Apache Software Foundation (ASF) under one or more* contributor license agreements.  See the NOTICE file distributed with* this work for additional information regarding copyright ownership.* The ASF licenses this file to You under the Apache License, Version 2.0* (the "License"); you may not use this file except in compliance with* the License.  You may obtain a copy of the License at**     http://www.apache.org/licenses/LICENSE-2.0** Unless required by applicable law or agreed to in writing, software* distributed under the License is distributed on an "AS IS" BASIS,* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.* See the License for the specific language governing permissions and* limitations under the License.*/
package com.opencfg.core;import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;/*** Java Date Test* @author opencfg.com* @since 0.0.1-SNAPSHOT* @version 0.0.1-SNAPSHOT* @date 2011-8-15*/
public class JavaDateTest {public static void main(String[] args) throws ParseException {SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");Date date1 = sf.parse("1927-12-31 23:54:06");Date date2 = sf.parse("1927-12-31 23:54:07");Date date3 = sf.parse("1927-12-31 23:54:08");Date date4 = sf.parse("1927-12-31 23:54:09");System.out.println(date2.getTime() - date1.getTime());System.out.println(date3.getTime() - date2.getTime());System.out.println(date4.getTime() - date3.getTime());}}

输入结果是:

1000
353000
1000

5分52秒 = 5 * 60 + 53 = 352  ,在加上本来就多的1秒,结果是多了353秒

java傻了吗?硬件有问题吗?都错

是政治问题,不信你看这里:

附地址:http://www.timeanddate.com/worldclock/clockchange.html?n=237&year=1927

历史确实有记载,简单地说,在1927年末的最后那一个午夜,时钟被往回拨了5分52秒。所以“1927-12-31 23:54:08”这一秒,事实上,发生了两次,而看起来在计算当地时间时,Java将其视为了后面那一个时间点,于是就产生了这一差别。

下边是摘抄一iteye哥们的:

时间区域和JAVA 
    涉及有关时间区域信息时Java和Solaris很相似。每个时间区域都有一个时间区域ID标识符。在J2SE 1.3 and 1.4中,这个ID是个字符串,是由位于J2SE 安装程序的jre/lib子目录中的tzmappings文件这些ID列表。 J2SE 1.3 仅仅只包含tzmappings文件,但是 J2SE 1.4包含世界不同地区的时间区域数据文件。jre/lib/zi存放着这些文件。在J2SE 1.4里,sun.util.calendar.ZoneInfo从这些文件获取DST规则。在Solaris中, 这些时间区域数据文件是以二进制形式存放的,不是文本文件,因此你不能看它们。 在J2SE 1.4中的时间区域数据文件和在Solaris中是不同的。

java.util.TimeZone类中getDefault方法的源代码显示,它最终是会调用sun.util.calendar.ZoneInfo类的getTimeZone 方法。这个方法为需要的时间区域返回一个作为ID的String参数。这个默认的时间区域ID是从 user.timezone (system)属性那里得到。如果user.timezone没有定义,它就会尝试从user.country和java.home (System)属性来得到ID。 如果它没有成功找到一个时间区域ID,它就会使用一个"fallback" 的GMT值。换句话说, 如果它没有计算出你的时间区域ID,它将使用GMT作为你默认的时间区域。

注意,System属性是在java.lang.System类的initProperties方法中被初始化的。这是一个本地方法。因此源代码是不可用的----除非你深入到J2SE分发包中的本地代码库中去研究。然而,在Windows系统中,System 属性是从Windows注册表中被初始化的,而在Linux/Unix中是由环境变量来进行初始化。initProperties方法的Javadoc声明,某些属性"必须保证被定义" 且列出它们。被java.util.TimeZone类的getDefault方法使用的三个System属性中,只有java.home作为一种“保证的”属性在Javadoc中被列出。

推荐的解决方案 
     因此,你如何确保JAVA能给你正确的时间和日期呢?最好的办法是确认JAVA虚拟机(JVM)的默认TimeZone类是正确的,且是适合你的地理范围(Locale)的。你如何来确保默认TimeZone是正确的且适合的呢?这又是一个新问题了。象大多数处理的问题一样,这个也有许多解决方案。根据java.util.TimeZone.getDefault方法的源代码来看,最好的办法是正确地设置user.timezone属性。在启动JAVA虚拟机时,你能很容易的通过使用 -D 命令 -line 参数的办法来覆盖(override)在java.lang.System.initProperties方法中所设置的值。例如:

Java代码 
  1. java -Duser.timezone=Asia/Shanghai DateTest

这个命令启动DateTest类,并设置 user.timezone属性到Asia/Shanghai。你也能够通过使用java.lang.System 类的setProperty方法来设置user.timezone 属性:

Java代码 
  1. System.setProperty("user.timezone","Asia/Shanghai");

如果没有一个可用的时间区域ID适合你,那么就你可以创建一个自定义TimeZone 使用java.util.TimeZone 类的 setDefault 方法将它设置为默认的时间区域----就象我先前在ItsInitializer 类中所做的操作一样。

记住,在J2SE中,大多数日期和时间相关的类都包含时间区域信息,包括那些格式类,如java.text.DateFormat, 因此它们都会被JVM的默认时间区域所影响。然而,在你创建这些类的实例时,你能为它们确保正确的时间区域信息,使得你可以更容易来设置整个JVM的默认时间区域。并且一旦设置好,就可以确保所有的这些类都将使用同一个默认的时间区域。

看到最后你是否发现,中国时间都信不过了,悲催哇,洗洗看电影睡吧!CCTV的报时也不一定是准的哇,靠人不如靠自己, 于是 就产生了 我靠!

Java永远的伤-中国1927年12月31日午夜相关推荐

  1. 必要转载 1927年12月31日午夜一秒谜案

    [程序员段子] 1927年12月31日午夜一秒谜案 [图片] 虽说是程序员向,不过内容和编程本身其实并没什么太大关系,请各位听我细细道来. StackOverflow是一个程序员向的问答网站,广大程序 ...

  2. 【程序员轶事】程序员的1927年12月31日午夜一秒谜案

    为什么80%的码农都做不了架构师?>>>    虽说是程序员问的,不过内容和编程本身其实并没什么太大关系,请各位听我细细道来.StackOverflow是一个程序员向的问答网站,广大 ...

  3. 程序员的1927年12月31日午夜一秒谜案

    来源:http://news.cnd8.com/news/48702.htm 虽说是程序员问的,不过内容和编程本身其实并没什么太大关系,请各位听我细细道来.StackOverflow是一个程序员向的问 ...

  4. 1927年12月31日午夜一秒谜案

    虽说是程序员向,不过内容和编程本身其实并没什么太大关系,请各位听我细细道来. StackOverflow是一个程序员向的问答网站,广大程序员们在上面交流经验.提问答疑,三天前,一位名叫Freewind ...

  5. 曾有邪教称1999年12月31日是世界末日。当然该谣言已经不攻自破。还有人称今后的某个世纪末的12月31日,如果是星期一则会… 有趣的是,任何一个世纪末的年份的12月31日都不可能是星期一!!

    #Calendar的小运用 本人基础较菜,跟随大佬,从今天学习第一个小知识开始记录: 曾有邪教称1999年12月31日是世界末日.当然该谣言已经不攻自破.还有人称今后的某个世纪末的12月31日,如果是 ...

  6. 互联网晚报 | 12月31日 星期五 | 滴滴发布上市后首份财报;商汤科技正式登陆港交所;我国高铁运营里程突破4万公里...

    今日看点 ✦ 腾讯用户信息接口调整,微信小程序调用个人信息将需授权 ✦ 滴滴发布上市后首份财报:Q3净亏306亿元,张勇辞任董事 ✦ 商汤科技正式登陆港交所,开启AI硬科技时代新篇章 ✦ 安踏体育宣派 ...

  7. 好未来:今年12月31日停止内地义务教育阶段学科类培训

    11月13日消息,据好未来官方微博消息,好未来发布公告称,中国内地义务教育阶段的学科类校外培训服务将于2021年12月31日截止.在此之前,将保质保量完成用户已报名的此类课程服务. 对于未来,好未来称 ...

  8. 天猫京东618下单金额近万亿;苹果或选择印度组装新款iPhone SE;Adobe将于12月31日终止支持Flash| 极客头条...

    整理 | 屠敏 头图 | CSDN 下载自东方 IC 快来收听极客头条音频版吧,智能播报由出门问问「魔音工坊」提供技术支持. 「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极 ...

  9. Flash将在2020年12月31日退出历史舞台

    外媒 Winfuture 报道,Adobe 的 Flash 格式迅速从动画网络故事的英雄变成了网络广告的反派,让你的 PC 速度变慢,最终成为恶意软件的载体. 该 Flash 格式已经经历了二十年,该 ...

最新文章

  1. c c 语言程序设计同步,第一部分C语言程序设计C语言程序设计同步练习答案.PDF...
  2. 同步方法 调用异步防范_.NET Web应用中为什么要使用async/await异步编程?
  3. ansys添加力矩_ANSYS软件中施加扭矩的方法
  4. [转]JS部分通用函数
  5. SmartGit for Mac(图形化Git客户端)
  6. 性能测试负载模型(十)
  7. 大学统计学基础知识笔记
  8. PMP 考点 第六章 项目进度管理
  9. Linux安装Tab键补全功能
  10. 邮件服务器软件选择,3款windows下的免费邮件服务器软件
  11. 宝可梦 序列号认证服务器发生了错误,宝可梦探险寻宝无法连接服务器是什么原因...
  12. NTFS磁盘读写工具Mounty 1.9 Mac免费版
  13. 记录93年男孩日常消费网店收入
  14. “微盟事件”星瑞格(Sino-DB)产品解决方案
  15. Canvas特效动画
  16. 阿里云AMD服务器ECS计算型c6a实例CPU网络性能评测
  17. window.print()打印网页局部内容
  18. 卡西欧G-SHOCK系列电子表时间调节(电子+指针)
  19. 2019海南大学计算机研究生分数线,2021海南大学研究生分数线一览表(含2019-2020历年复试)...
  20. MSM全处理器深度解析

热门文章

  1. python 爬虫 搜狗词库
  2. java实现定时器的方法
  3. 我的BB-Black之旅……(一)
  4. Hopfield神经网络及其改进
  5. 惠普HP ENVY Photo 6222 打印机驱动
  6. 在ROS平台使用扩展卡尔曼融合里程计与IMU传感器
  7. N9K交换机配置端口镜像
  8. 服务器阵列状态显示verify,如何在CLARiiON阵列上运行后台校验(Background Verify)命令...
  9. 【从零开始学用OpenCV】Day1 环境配置与搭建
  10. 基于PaddlePaddle的八一制片厂拍摄的空军题材电影 50年代少有的经典老片子 《长空比翼》影像修复