比如,
calendar.add(Calendar.DAY_OF_MONTH, amount);
calendar.add(Calendar.DAY_OF_YEAR, amount);
如上,有何区别?
比如,
calendar.add(Calendar.DAY_OF_MONTH, amount);
calendar.add(Calendar.DAY_OF_YEAR, amount);
如上,有何区别?
4 回答1.5k 阅读✓ 已解决
4 回答1.3k 阅读✓ 已解决
1 回答2.6k 阅读✓ 已解决
2 回答762 阅读✓ 已解决
2 回答1.8k 阅读
2 回答1.7k 阅读
2 回答1.3k 阅读
简单来说,没区别。
Calendar 类的 add 方法是个抽象方法,在 JDK 中有三个类实现了这个方法,分别是:
java.util.JapaneseImperialCalendar
java.util.GregorianCalendar
sun.util.BuddhistCalendar
忽略第三个,只看前两个实现类,有这么一段代码:
粗看一下,break以后的执行分支并没有针对这三种做区别处理。
而且 amount 似乎没有受第一个参数的范围限制,比如调用:
calendar.add(Calendar.DAY_OF_MONTH, 100);
可以看到最终结果的 day_of_year 还是增长了100 天。
这个方法的 API 中描述的两个规则可以解释这种超过范围情况:
所以我觉得这两个方法调用没有区别,即便 amount 超出了 day_of_month 的范围,这个方法也会正确处理。
不过从可读性考虑,还是用适当的参数比较好。