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

Calendar.MINUTE获取的分钟值与Date解析结果不符,求原因

问题原因解析:Calendar.MINUTE与Date分钟值的差异

嗨,你这里踩了一个Java日期类的常见新手坑——Calendar.MINUTE根本不是用来直接获取当前分钟数值的!

咱们把问题拆解开看:

  • 你用SimpleDateFormat格式化new Date()得到的是当前系统时间的真实分钟,这部分逻辑是完全正确的。
  • 但直接打印Calendar.MINUTE,输出的其实是一个静态常量的固定值(通常是12),它的作用是作为「字段索引标记」——用来告诉Calendar类:“我要操作的是分钟这个字段”,而不是直接返回当前时间的分钟数。

文档里提到的“返回当前分钟的整数值”,指的是调用Calendar.get(Calendar.MINUTE)方法时的返回结果,而不是Calendar.MINUTE这个常量本身。你得先获取当前时间的Calendar实例,再用get()方法传入这个常量,才能拿到真实的当前分钟。

给你修正后的代码,跑起来结果就一致了:

public class Testerson { 
    public void print() { 
        SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy hh:mm"); 
        System.out.println("Date time = " + sdf.format(new Date())); 
        
        // 正确获取当前分钟的姿势:先拿Calendar实例,再用get方法指定字段
        Calendar calendar = Calendar.getInstance();
        System.out.println("Calendar Minute = " + calendar.get(Calendar.MINUTE)); 
    } 
    public static void main(String[] args) {
        new Testerson().print();
    }
}

简单类比一下:Calendar.MINUTE是打开Calendar中“分钟抽屉”的钥匙,你直接把钥匙当成抽屉里的分钟数值用,当然和真实时间的分钟对不上啦😉

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:59:29