You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java Calendar调用add方法加1小时未生效问题原因解析

Java Calendar加1小时后显示时间无变化问题解析

问题复现

代码执行逻辑如下:

  • 为Calendar对象设置Date类型时间:
    calendarObject.setTime(date);
    
    打印输入的date对象,输出为预期时间:Sun Oct 31 02:00:00 CEST 2021
  • 对Calendar对象执行加1小时操作:
    calendarObject.add(Calendar.HOUR_OF_DAY, 1);
    
  • 打印Calendar对象的最终时间:
    System.out.println(calendarObject.getTime());
    

实际输出仍为Sun Oct 31 02:00:00 CEST 2021,和预期的Sun Oct 31 03:00:00不符。

根因说明

该问题由时区的时令切换规则导致:
CEST(中欧夏令时)每年10月的最后一个周日会执行夏令时转冬令时的操作,当日凌晨3点整时,系统时间会自动回滚1小时回到2点。代码的加1小时逻辑已经正常执行完成,只是对应时区的显示时间恰好落在了回滚区间,所以最终打印结果和初始时间显示一致。

内容的提问来源于stack exchange,提问作者wty

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 23:24:07