我面临一个非常奇怪的问题。这是代码,它生成一个新的Date对象:
Date result = DateUtils.setYears(new Date(), year);
result = DateUtils.setMonths(result, month);
return DateUtils.setDays(result, day);
如果我从1到11的月份传递了任何值-一切正常,则1表示1月2日-2月... 11月11日。但是只有12时,它总是失败,并带有java.lang.IllegalArgumentException: MONTH
异常。
当我尝试传递基于0的值时,第一个0表示上一年的12月。
先感谢您
方法setMonths
看起来像
public static Date setMonths(Date date, int amount) {
return set(date, Calendar.MONTH, amount);
}
如您所见,它在内部使用java的Calendar.MONTH。Calendar
课堂中的月份从0到12开始(12的值表示UNDECIMBER,即一年中的第13个月,虽然GregorianCalendar不使用此值,但农历使用)。因此,当您传递0时表示1月,1表示2月,...而11则表示12月。无效的月份值日历类抛出
java.lang.IllegalArgumentException
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句