反转GregorianCalendar对象添加分钟方法

时间:2015-03-05 12:08:38

标签: java datetime

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的了解并不好,所以我很好奇为什么会这样。

1 个答案:

答案 0 :(得分:6)

不确定

  • Calendar.MINUTE的常数值为12
  • Calendar.YEAR的常数值为1

所以你的第二个电话相当于:

gc.add(Calendar.YEAR, 12);

这就是为什么我们尝试不构建这样的API,当然。 java.util.Calendar在任何方面都是一个可怕的API。请改用Java 8中的Joda Timejava.time