向GregorianCalender
对象添加一分钟时,我们会在下面添加1分钟的时间:
GregorianCalendar gc = new GregorianCalendar(TimeZone.getTimeZone("UTC"));
gc.add(Calendar.MINUTE,1);
但是错误地,我把它颠倒了:
GregorianCalendar gc = new GregorianCalendar(TimeZone.getTimeZone("UTC"));
gc.add(1,Calendar.MINUTE);
这增加了12年的时间。任何人都可以描述为什么会这样吗?我对Java的了解并不好,所以我很好奇为什么会这样。
答案 0 :(得分:6)
不确定
Calendar.MINUTE
的常数值为12 Calendar.YEAR
的常数值为1 所以你的第二个电话相当于:
gc.add(Calendar.YEAR, 12);
这就是为什么我们尝试不构建这样的API,当然。 java.util.Calendar
在任何方面都是一个可怕的API。请改用Java 8中的Joda Time或java.time
。