之前朋友给我出了一道题,就是用Java程序计算"1900-12-31 23:54:16"和"1900-12-31 23:54:17"的时间差是多少。我一看说不就是一秒吗,他说不对。你们用自己的编译器试试打印出的结果是多少,是不是相差的一秒钟。
我想,应该大家的答案应该不是完全一样的。因为,他之前用他的编译器打印出来的是344。而我用自己的编译器打印出来就是1。
我以为是我注释掉的那一行代码的问题,因为我见他有那么一行代码。于是我也加上那一行,试了一下结果还是1。
于是我找了几个朋友帮我试了一下并询问了一下他们的jdk版本。和我预期的一样,和jdk版本有关系,1.8以下全是正常的一秒。
于是我也翻了一下我的1.8版本的jdk出来,诶,厉害了,我的还是打印的1。这就让我懵逼了,看来这个问题不是在jdk的大版本中做的改动啊。我于是上官网下载了最新版本的jdk,果然就变成了他给我的结果。以下是我几个版本的测试结果:
至于为什么会有这样的结果,好像说是一个历史原因,统一时区发现时间上面有所差异,于是做了统一。这种说法是否真的也不太清楚,如果真的为什么现在才做出jdk调整,或者说jdk改出了问题。这就相当于一个奇闻趣事吧。开心就好,如果谁发现了关于这一点的解释记得告诉我一下,我也挺感兴趣的。
如果有更多奇闻轶事可以和我交流,我的个人微信公众号: