JodaTime设置2024年2月29日抛异常,寻求解决办法
问题原因
你遇到的问题是链式调用顺序错误导致的。当你先调用withMonthOfYear(2)时,DateTime实例的年份还是默认值(比如当前系统年份,如果是平年的话),平年2月只有28天,这时调用withDayOfMonth(29)会直接触发参数校验抛出异常——后续再设置闰年2024已经来不及,错误早在前一步触发了。
解决方案
调整调用顺序,先设置年份,再设置月份,最后设置日期,让每一步修改都基于合法的闰年状态:
final DateTime selectedDate = new DateTime() .withYear(year) .withMonthOfYear(month) .withDayOfMonth(day);
或者更直接,使用DateTime的多参数构造方法,直接传入年、月、日创建实例,彻底避免中间状态的问题:
final DateTime selectedDate = new DateTime(year, month, day, 0, 0);
这样就能正确创建2024年2月29日的DateTime实例了。
内容的提问来源于stack exchange,提问作者quma
相关产品推荐
相关产品推荐

