Java Calendar日历的自动更正日期?

时间:2011-02-03 14:46:43

标签: java calendar

我想知道在设置它时是否有任何最简单的方法来纠正日期值。我的意思是:

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);对不起。

3 个答案:

答案 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,则这是最接近单行的。