GregorianCalendar构造函数检查无效输入吗?

时间:2016-01-07 18:02:24

标签: java validation datetime

GregorianCalendar构造函数有签名:

GregorianCalendar(int year, int month, int dayOfMonth)
GregorianCalendar(int year, int month, int dayOfMonth, int hourOfDay, int minute, int second) 

如果我从构造函数合同中传递monthdayOfMonth会怎样?

很容易检查0-11范围内的月份。但是如果不编写自己的日历实现,就无法检查有效日期(应该是28/28/30/31?)。

如果Java平台检查用户日期输入,那应该很好。我不想在自己的代码中检查2015-13-32是否是有效的ISO日期。

1 个答案:

答案 0 :(得分:2)

构造函数不检查,你可以做的是设置执行setLenient(false)后的时间,这将使Calendar只接受有效值:

Calendar cal = Calendar.getInstance();
cal.setLenient(false);
cal.set(2016, Calendar.FEBRUARY, 30);
System.out.println(new SimpleDateFormat("dd/MM/yyyy").format(cal.getTime()));

此示例将抛出异常,因为02/30/2016不是有效日期(cal.getTime()抛出异常)。