java calendar 24小时制_每天都是24小时吗?明确告诉你,不是!看看java.util.Calendar...

每天都是24小时,是大家公认的一个事实。可以在Java中也是这样吗?

93e5c22dd9550e324b8c057e74cbbfae.png

标题说看看java.util.Calendar,那就看看这个类里一天是不是24小时。

先看看下面这段代码。

6fb066c556a0e30fa25736e4bcfd99d5.png

创建了两个Calendar对象,start是“2020-01-01 00:00:00”,而end是“2020-01-02 00:00:00”。这里有个比较特殊的地方是,月是从0开始的,也就是0表示1月。

最后通过计算获取这两个时间点之间的小时数,并输出。看上面图中,最后输出的是24。

这不也是24小时吗。也没有什么特殊啊。

别急,继续往下看,看看下面的代码。

253d485e5fea40927d7d30ec4a84e6f3.png

这次是计算的“1990-04-15 00:00:00”到“1990-04-16 00:00:00”之间的小时数,竟然是23,真的不是每天的有24小时。可是这是为什么呢?

不要着急,还没有完呢。

再看下面这段代码。

124d87e94d34788eb681a729c39f1cf8.png

一天不止可能比24小时少,还可能会多,像上面这段代码,计算的是“1990-09-15 00:00:00”到“1990-09-16 00:00:00”之间的小时数,结果是25小时。

怎么会有这样的结果呢,会有的一天是23小时,有的一天是25小时呢?

是这个Calendar类有bug?

当然不是了,其实这是有一个历史原因在里面的。

是“夏令时”,可能有的年龄小一点的朋友没有听过。可以到百度百科去看一看就能明白个大概了。

因为夏天的时候,日照时间变长,天亮得早。“夏令时”就是在这个时候,把时间往前拨一小时。目的是让人们早睡早起,节约照明用电。

往前拨一小时的这天就会少一小时,变成23小时,就像上面示例代码中的“1990-04-15”。

而到了后面日照时间变短的时候,就再往回拨一小时,往回拨的这天就会多一小时,就像上面示例代码中的“1990-09-15”。

今天这个关于一天是不是24小时的神奇问题就聊到这里了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值