Calendar.clear(int field)的陷阱

本文深入解析了Java Calendar类中clear()方法的使用误区,通过实例展示了其与预期行为的不同之处,强调了正确使用set()方法的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

运行以下代码,你期望会输出什么?
   // 假设现在的时间是11:34:03
   Calendar cal = Calendar.getInstance();
   cal.set(Calendar.HOUR_OF_DAY, 5);
   cal.clear(Calendar.HOUR_OF_DAY);
   cal.clear(Calendar.Calendar.SECOND);
   System.out.println("h: "cal.get(Calendar.HOUR_OF_DAY) + " ,s: " + cal.get(Calendar.SECOND));
  你一定以为会输出h: 0 , s: 0
  什么?不是?哪输出的是h: 5 , s: 3
  都不是!!!
  输出的h: 11 , s: 0
  呵呵,难以置信吧?
  原来Calender的clear(int)方法并不是清零,
  对于HOUR,HOUR_OF_DAY就是返回最原始的值。
  其他的可能是清零。
  总之,不是一个保险的方法,还是尽量用set(HOUR, 0)这样的方法代替。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值