我想知道在设置它时是否有任何最简单的方法来纠正日期值。我的意思是:
int birthDay = 30;
int birthMonth = 1;
int birthYear = 1980;
Calendar cal = Calendar.getInstance();
cal.set(Calendar.DAY_OF_MONTH, birthDay);
cal.set(Calendar.MONTH, birthMonth);
cal.set(Calendar.YEAR, birthYear);
2月没有30天。另一方面它有特殊情况,1980年是2月29天。所以我必须得到校正值为“1980年2月29日”。如果我超过月份的范围,它应该占用该月的最大日期。我怎么能以最简单的方式做到这一点,如果我能找到不需要编写任何额外代码而不是使用Calendar类方法的解决方案,那将是完美的。
编辑:我更改了cal.set(Calendar.MONTH,birthMonth-1); to cal.set(Calendar.MONTH,birthMonth);对不起。
答案 0 :(得分:4)
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, birthYear);
cal.set(Calendar.MONTH, birthMonth);
cal.set(Calendar.DAY_OF_MONTH, Math.min(birthDay, cal.getActualMaximum(Calendar.DAY_OF_MONTH)));
答案 1 :(得分:1)
使用calendar.getActualMaximum(Calendar.DAY_OF_MONTH)查找当月的最大日期
答案 2 :(得分:0)
不,目前这是唯一的方式。
当然,您可能希望使用java.text.DateFormat
对象(通常为SimpleDateFormat
)从String解析日期。如果您的输入是String
,则这是最接近单行的。