反转GregorianCalender对象的add minute方法

Raj*_*ami 2 java datetime

当向GregorianCalender对象添加一分钟时,我们在下面添加1分钟的时间:

GregorianCalendar gc = new GregorianCalendar(TimeZone.getTimeZone("UTC"));
gc.add(Calendar.MINUTE,1);
Run Code Online (Sandbox Code Playgroud)

但是错误地,我把它颠倒了:

GregorianCalendar gc = new GregorianCalendar(TimeZone.getTimeZone("UTC"));
gc.add(1,Calendar.MINUTE);
Run Code Online (Sandbox Code Playgroud)

这增加了12年的时间.任何人都可以描述为什么会这样吗?我对Java的了解并不好,所以我很好奇为什么会这样.

Jon*_*eet 6

当然.

  • 常数值为Calendar.MINUTE12
  • 常数值为Calendar.YEAR1

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

gc.add(Calendar.YEAR, 12);
Run Code Online (Sandbox Code Playgroud)

这就是我们为什么不尝试构建这样的API的原因.java.util.Calendar在任何方面都是一个可怕的API.请使用Joda Timejava.timeJava 8.