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

Java中Calendar.getActualMinimum(HOUR)返回12而非0的问题咨询

问题解答:Calendar.HOUR的最小值为何是12而非0?

哦,这个坑我之前踩过!你遇到的问题核心在于Calendar.HOUR这个字段的定义——它是12小时制的时间字段,对应的取值范围是1-12(分别代表上午/下午的12点到11点),所以getActualMinimum(Calendar.HOUR)返回12完全是符合API设计的。

为什么会这样?

Java的Calendar类里,时间字段分为两种:

  • Calendar.HOUR:12小时制,用于区分上午(AM)和下午(PM),最小值是12(对应午夜或正午的12点),最大值是11。
  • Calendar.HOUR_OF_DAY:24小时制,取值范围是0-23,最小值是0(对应当天的午夜0点),这才是我们通常用来设置“当天起始时间”的字段。

解决方案

如果你想把时间设置为当天的午夜0点,替换成Calendar.HOUR_OF_DAY就可以解决问题:

// 方式一:通过getActualMinimum获取最小值
calendar.set(Calendar.HOUR_OF_DAY, calendar.getActualMinimum(Calendar.HOUR_OF_DAY));

// 方式二:直接写0(因为HOUR_OF_DAY的最小值固定为0)
calendar.set(Calendar.HOUR_OF_DAY, 0);

如果你的场景确实需要处理12小时制的时间,那12就是正确的最小值,但大多数情况下,设置当天起始时间用24小时制的HOUR_OF_DAY才是符合预期的选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:22:34